Pick through the spinach removing any leaves with blemished stems.
Bring a large pot of salted water over medium-high heat to a boil. Add the spinach and blanch until bright green and tender.
Remove spinach to a bowl of ice water to stop the cooking process. Drain the spinach then squeeze out as much excess water as possible.
Heat a large sauté pan over medium heat, add the olive oil and heat through. Add the onion and sauté until tender and opaque, about 4 minutes. Add the garlic and sauté until fragrant, about an additional 30 seconds.
Add the butter and allow to melt then stir in the flour and let the roux cook for a minute until a pale golden brown. Add the milk and cream, whisking to incorporate.
Bring the mixture to a simmer, then lower the heat to medium-low, whisking until the sauce thickens and coats the back of a spoon, about 5 minutes. Stir in the Parmesan and cayenne, then season to taste with salt and pepper.
Add the spinach, stirring to coat it in the mornay sauce. Serve hot.
Notes
Blanch your spinach before adding it to the sauce. This quick step helps preserve its bright green color and removes oxalic acid, preventing that chalky mouthfeel spinach sometimes leaves behind.