Coat a large, straight-sided saute pan with olive oil and heat over medium heat. Add the spinach, cover and saute until gently wilted. Remove the spinach from the pan to a colander set inside a bowl to let the spinach drain and cool.
Remove any liquid from the bottom of the saute pan and coat lightly with olive oil. Heat the oil over medium heat, add the onions, and season with salt, to taste. Saute the onions until they are translucent and very aromatic, about 5 to 7 minutes. Add the garlic and saute for 2 to 3 more minutes. Add the butter, and when melted stir in the flour. Cook until it is the texture of wet sand, about 5 to 6 minutes. Whisk in the milk, cayenne pepper and Parmigiano. Taste for seasoning and season with salt, if needed, (it will). Bring the milk to a boil, then reduce the heat and simmer for 5 to 6 minutes, stirring occasionally, so the milk doesn t scorch on the bottom.
Add in the reserved spinach and stir to combine. Taste and adjust the seasoning, if needed. Transfer to a serving bowl and serve.