In a large Dutch oven, heat olive oil over medium-high heat.
Add spinach and cover for 1 minute. Continuously toss the leaves until they are slightly wilted and bright green, about 2-3 minutes.
Transfer the spinach to a strainer to drain excess liquid, then place it on a work surface lined with paper towels. Set aside to cool.
Wrap the spinach in the paper towels and squeeze out any remaining liquid. Chop into ½-inch pieces.
In the same Dutch oven, melt butter over medium-high heat. Add shallot and cook until fragrant and translucent, about 5-6 minutes. Add garlic and cook for 1 more minute.
Stir in flour, salt, black pepper, cayenne pepper, and nutmeg.
Slowly pour in half and half, stirring constantly, and bring to a low boil.
Add mozzarella, parmesan, and cream cheese. Reduce heat to low and cook, stirring, until the mixture is thickened.
Add the chopped spinach and toss to coat in the cream sauce. Cook and stir until heated through, about 2 minutes.
Serve immediately.