Golden-edged roasted cauliflower florets nestled under a blanket of mascarpone and ricotta cream, topped with bubbly mozzarella and toasted pine nuts — this is Italian comfort food at its keto best. Every bite delivers that velvety, almost sinful richness you expect from a proper Italian gratin, with roasted garlic tying everything together and fresh basil cutting through the richness. The cauliflower absorbs just enough of the mascarpone cream to become impossibly tender while keeping its roasted edges intact. If you have ever wondered whether keto dinners can feel truly indulgent, this gratin answers that question in one forkful.
At roughly 54 grams of fat and only 9 grams of net carbs per serving, this recipe lands squarely in the keto sweet spot. The mascarpone and ricotta do most of the heavy lifting — mascarpone brings the luxurious fat content that keeps you satisfied for hours, while ricotta adds a lighter, slightly tangy dimension along with a welcome bump of protein. With 23 grams of protein per serving, this is a complete dinner that hits your macros without needing a side of eggs or tofu to round things out.
What makes this gratin truly shine for weekly meal prep is how beautifully it holds up in the refrigerator. Portion it into four containers straight from the baking dish, and you have dinner sorted for the next three to five days. Unlike dishes that get soggy or separate when reheated, the egg-enriched mascarpone cream actually sets slightly as it cools, making each portion slice cleanly and reheat to creamy perfection.
Ingredients (serves 4)
For the roasted cauliflower:
- 1 medium-large head cauliflower, about 1 1/4 lb (550g), cut into bite-sized florets
- 2 tbsp (30ml) extra-virgin olive oil
- 1/2 tsp fine sea salt
- 1/4 tsp freshly ground black pepper
For the mascarpone-ricotta cream:
- 6 oz (170g) mascarpone cheese, at room temperature
- 1/2 cup (125g) whole-milk ricotta cheese
- 1/4 cup (60ml) heavy whipping cream
- 2 large eggs, lightly beaten
- 1/3 cup (30g) finely grated Parmesan cheese
- 4 cloves garlic, minced
- 2 tbsp (28g) unsalted butter
- 1/2 tsp dried Italian seasoning
- 1/8 tsp freshly grated nutmeg
- 1/4 tsp fine sea salt
- Pinch of red pepper flakes
For the spinach layer:
- 4 cups (120g) packed baby spinach
For the topping:
- 1 cup (112g) shredded low-moisture mozzarella cheese
- 1/4 cup (22g) finely grated Parmesan cheese
- 2 tbsp (17g) pine nuts
- Fresh basil leaves, for garnish
Instructions
Preheat the oven to 400°F (200°C). Line a large rimmed baking sheet with parchment paper. Have a 9×9 inch (23×23cm) or 8×11 inch (20×28cm) baking dish ready — ceramic or glass works best for even heating.
Roast the cauliflower. Spread the florets on the prepared baking sheet in a single layer. Drizzle with olive oil, sprinkle with salt and pepper, and toss to coat evenly. Roast for 20 to 22 minutes, tossing once halfway through, until the edges turn golden brown and the florets are just tender when pierced with a knife. The roasted flavor is essential here — do not skip this step or use raw cauliflower, as you will lose the nutty caramelization that makes the gratin special.
Wilt the spinach while the cauliflower roasts. Melt the butter in a large skillet over medium heat. Add the minced garlic and cook for 60 seconds, stirring constantly, until fragrant but not browned. Add the baby spinach in two batches, tossing with tongs until fully wilted, about 2 minutes total. Season with a small pinch of salt. Transfer to a plate and set aside. There is no need to squeeze out excess moisture — the small amount of liquid will incorporate into the cream.
Make the mascarpone-ricotta cream. In a medium mixing bowl, combine the mascarpone, ricotta, heavy cream, beaten eggs, the 1/3 cup of Parmesan, Italian seasoning, nutmeg, salt, and red pepper flakes. Stir with a spatula until smooth and thoroughly combined. The mixture should be thick but pourable — similar to a loose pancake batter. If the mascarpone was cold and the mixture feels lumpy, let it sit at room temperature for five minutes and stir again.
Assemble the gratin. Lightly grease the baking dish with a thin film of butter or olive oil. Scatter the roasted cauliflower florets evenly across the bottom. Distribute the wilted spinach over and between the florets. Pour the mascarpone-ricotta cream over the entire surface, using a spatula to nudge it into the gaps between the florets. The cream should reach about three-quarters of the way up the cauliflower — it will bubble up and fill the rest during baking.
Add the topping. Scatter the shredded mozzarella in an even layer over the cream. Sprinkle the remaining 1/4 cup of Parmesan over the mozzarella. Distribute the pine nuts across the top — they will toast as the gratin bakes.
Bake the gratin at 400°F (200°C) for 22 to 25 minutes, until the cream is set around the edges, the mozzarella is melted and bubbly, and the pine nuts are golden. The center should be just barely jiggly when you shake the dish — it will firm up as it cools. If the top is not golden enough for your liking, switch to the broiler for 90 seconds, watching carefully to avoid burning the pine nuts.
Rest before serving or portioning. Let the gratin cool in the dish for at least 10 minutes. This resting time is important — the cream firms up slightly, making it far easier to slice into clean portions. Garnish with torn fresh basil leaves just before serving. For meal prep, let the gratin cool completely to room temperature before cutting into four equal portions and transferring to airtight containers.
Nutrition per Serving
| Nutrient | Amount |
|---|---|
| Calories | ~620 kcal |
| Fat | ~54g |
| Protein | ~23g |
| Total Carbs | ~13g |
| Fiber | ~4g |
| Net Carbs | ~9g |
Nutrition is approximate and calculated based on the stated ingredient quantities using USDA data.
Tips & Variations
Meal-prep storage and reheating. Store portioned containers in the refrigerator for up to five days. Reheat individual portions in the microwave for 90 seconds at 80% power, or place in a 350°F (175°C) oven for 12 to 15 minutes until heated through. The gratin reheats exceptionally well because the egg-enriched mascarpone cream holds its texture rather than breaking or separating. Avoid freezing — the cauliflower texture suffers after thawing.
Swap the pine nuts if they are hard to find. Pine nuts are traditional in Italian cooking but can be expensive or unavailable. Slivered almonds, roughly chopped walnuts, or even toasted pumpkin seeds all work beautifully and keep the carb count virtually identical. Toast whichever nut you choose lightly before adding to the topping so they contribute crunch even after baking.
Watch for hidden carbs in ricotta brands. Not all ricotta is created equal on keto. Some mass-market brands add stabilizers or fillers that push the carb count up by two to three grams per serving. Check the label and look for ricotta with a short ingredient list — milk, whey, salt, and an acid like vinegar or citric acid. Whole-milk ricotta is always the better choice for both flavor and macros compared to part-skim versions.
Add more vegetables without spiking the carbs. Sliced zucchini rounds, quartered artichoke hearts, or diced roasted red pepper can all be layered in alongside the cauliflower. Keep the total vegetable volume roughly the same to maintain the cream-to-vegetable ratio. Avoid higher-carb additions like onions or cherry tomatoes, which can push individual servings past the 10 gram net carb threshold.
Turn it into a heartier dinner. For nights when you want more substance, serve a portion over a bed of zucchini noodles tossed with a little butter, or alongside a simple arugula salad dressed with olive oil and lemon. The gratin is already a complete keto meal on its own, but the peppery arugula is a particularly nice contrast to the rich mascarpone cream.