01 - Preheat your oven to 400°F. Lightly grease a medium baking dish.
02 - Bring a large pot of salted water to a rolling boil. Add the pasta and cook for 2 minutes less than the package instructions suggest for an al dente texture. Drain thoroughly and set aside.
03 - In a large skillet, melt the unsalted butter over medium heat. Add the finely chopped onion and sauté until softened, approximately 3-4 minutes. Stir in the minced garlic and cook for an additional 1 minute until fragrant.
04 - Sprinkle the all-purpose flour into the skillet and cook, stirring continuously, for 1 minute to form a roux. Gradually whisk in the whole milk and heavy cream until fully incorporated. Bring the mixture to a gentle simmer and continue to cook, stirring constantly, until the sauce thickens, about 3-4 minutes.
05 - Remove the skillet from the heat. Add the shredded mozzarella, grated Parmesan, ricotta cheese, salt, freshly ground black pepper, and a pinch of ground nutmeg. Stir vigorously until all the cheeses are completely melted and the sauce is smooth and creamy.
06 - Add the roughly chopped fresh spinach to the sauce and cook for 1-2 minutes, stirring gently, until the spinach is just wilted.
07 - Combine the drained, cooked pasta with the creamy cheese and spinach sauce. Mix thoroughly to ensure the pasta is well-coated. Transfer the mixture into the prepared baking dish, spreading it evenly.
08 - Generously sprinkle the top of the pasta bake with the additional shredded mozzarella cheese and grated Parmesan cheese.
09 - Bake in the preheated oven for 20-25 minutes, or until the top is golden brown and the sauce is bubbling. Allow the dish to rest for 5 minutes before serving to set.