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.