Preheat the broiler to high and ensure a rack is placed in the upper third of the oven.
Boil the pasta according to package directions. It is best to work with warm pasta, so I would not recommend doing this too far in advance.
In a medium sized pot, melt the butter over medium heat. Add the onion and sauté for 2 to 3 minutes. Add the garlic and sauté for 1 minute more.
Whisk in the flour until it slightly darkens in color, about 1 to 2 minutes. Whisk in the milk (and/or cream) and nutmeg and bring to a boil. Turn down the heat to a heavy simmer and cook while stirring until the sauce thickens, about 5 to 6 minutes.
Meanwhile, spread out the cooked noodles in a large casserole dish. Layer the fresh spinach (or other greens) on top. Once the sauce is done, evenly distribute it over top. Carefully fold the noodles and spinach together with the sauce.
Add spoonful dollops of ricotta on top of the noodle mixture. Sprinkle with mozzarella and then the Parmesan.
Broil until browned and crispy on top, about 5 to 6 minutes (but watch closely since ovens do vary).