Preheat the oven to 350°F. Heat a large oven-safe pot over medium-low-heat and add the butter.
Stir in the garlic and onion with a pinch of pepper and salt. Cook, stirring frequently, until the onions have softened.
You could even cook the pasta from a different pot. It is possible to cook it too - just be certain that you give it a quick spritz of olive oil so that it does not stick together. Toss all of the grated cheese together.
Stir the flour to the onions to make a roux. Cook for 2-3 minutes, till it becomes golden-colour and begins to smell nutty.
Gradually stream in the milk while stirring continuously. The mixture will start to come together and thicken.
Add spinach, it'll appear overwhelming at first, but it is going to quickly cook ! Stir until it cooks down and softens.
When the spinach cooks down, stir in virtually all the cheese (reserve a little for topping) along with the pasta. Toss it together over and over until it's combined.
Top with the remaining grated cheese. Top with crispy onions. Bake for 35-30 minutes, till golden and bubbly.
Serve and enjoy!