There are two kinds of keto mornings: the kind where you scramble something passable while half asleep, and the kind where you open the fridge, pull out a thick square of golden frittata loaded with gooey mozzarella pockets and a shatteringly crisp Parmesan-almond crumble, and reheat it in ninety seconds flat. This recipe is built for that second kind. Sautéed zucchini, sweet bits of sun-dried tomato, and cream cheese melted directly into the egg custard give every bite a richness that tastes like a lazy Sunday brunch — except you made it once and ate it all week.

Each generous square delivers 55 grams of fat and 35 grams of protein with only 6 grams of net carbs. Fat accounts for nearly 75 percent of the calories here, exactly where you want it on keto. The cream cheese and heavy cream create a silky, almost quiche-like interior, while the torn mozzarella melts into stretchy pockets throughout. Even the crumble topping pulls double duty — almond flour and Parmesan bring healthy fats and savory crunch without a single grain of wheat.

This slab frittata is the kind of recipe that rewards a small investment of time with breakfast handled for four or five days straight. Bake it on a Sunday evening, let it cool, slice it into squares, and stack them in the fridge. They reheat beautifully in the microwave or oven, holding their shape and keeping their crumble crisp if you give them a quick blast under the broiler. No morning cooking, no dishes, no excuses to skip the most important meal of the day.

Ingredients (serves 4)

For the frittata:

  • 10 large eggs
  • 8 oz (225g) fresh mozzarella, torn into bite-sized pieces
  • 3 oz (85g) cream cheese, softened
  • 1/4 cup (60ml) heavy cream
  • 1 1/2 oz (42g) freshly grated Parmesan
  • 1 small zucchini (5 oz / 140g), diced into 1/2-inch pieces
  • 2 tablespoons (14g) oil-packed sun-dried tomatoes, drained and finely chopped
  • 2 cloves garlic, minced
  • 2 tablespoons (28g) unsalted butter, divided
  • 1/4 teaspoon red pepper flakes
  • 1/2 teaspoon fine sea salt
  • 1/4 teaspoon freshly ground black pepper

For the Parmesan-almond crumble:

  • 3 tablespoons (21g) almond flour
  • 2 tablespoons (14g) freshly grated Parmesan
  • 1 tablespoon (14g) unsalted butter, melted
  • 1/2 teaspoon dried Italian seasoning

For the basil oil finish:

  • 8–10 fresh basil leaves
  • 1 tablespoon (15ml) extra-virgin olive oil

Instructions

  1. Preheat the oven to 350°F (175°C). Grease a 9×9-inch (23×23 cm) baking dish with 1 tablespoon of the butter, making sure to coat the corners and sides thoroughly.

  2. Cook the zucchini. Melt the remaining 1 tablespoon butter in a medium skillet over medium-high heat. Add the diced zucchini and cook for 3 to 4 minutes, stirring occasionally, until the pieces are lightly golden on the edges and most of the moisture has cooked off. You want them dry, not steaming — wet zucchini will make the frittata soggy. Add the minced garlic and cook for 30 seconds until fragrant. Remove from heat and stir in the chopped sun-dried tomatoes. Set aside to cool slightly.

  3. Build the egg base. Crack the eggs into a large bowl and whisk until smooth and uniform in color. Cut the softened cream cheese into roughly 1/2-inch cubes and drop them into the eggs along with the heavy cream. Whisk vigorously for about 30 seconds until the cream cheese is mostly incorporated — a few small lumps are perfectly fine and will melt during baking. Stir in the grated Parmesan, red pepper flakes, salt, and black pepper.

  4. Assemble the frittata. Fold the sautéed zucchini and sun-dried tomato mixture into the egg base. Pour everything into the prepared baking dish. Scatter the torn mozzarella pieces evenly across the surface, pressing about half the pieces slightly below the surface so they create gooey pockets throughout the interior while the rest melt into golden pools on top.

  5. Make the crumble. In a small bowl, combine the almond flour, grated Parmesan, melted butter, and Italian seasoning. Stir with a fork until the mixture forms coarse, sandy crumbs. Scatter the crumble evenly over the top of the frittata, concentrating most of it toward the center where the egg is thickest.

  6. Bake for 30 to 35 minutes until the edges are puffed and golden, the crumble has turned deeply golden brown, and the center is set with only the slightest jiggle when you gently shake the dish. A toothpick inserted near the center should come out clean or with just a tiny trace of moisture. The frittata will firm up further as it cools. If the crumble needs extra color, switch to the broiler on low for 60 to 90 seconds, watching closely.

  7. Finish and rest. Remove from the oven and let the frittata cool in the dish for at least 10 minutes. Tear the fresh basil leaves over the top and drizzle with the extra-virgin olive oil. Cut into 4 equal squares.

  8. Store for the week. Let any squares you are not eating immediately cool completely to room temperature, about 30 minutes total. Wrap each square individually in parchment paper and place them in a single layer inside an airtight container. Refrigerate for up to 5 days. Reheat in the microwave for 60 to 90 seconds or in a 350°F (175°C) oven for 8 to 10 minutes until warmed through.

Nutrition per Serving

Nutrient Amount
Calories ~660 kcal
Fat ~55g
Protein ~35g
Total Carbs ~7g
Fiber ~1g
Net Carbs ~6g

Nutrition values are approximate and may vary based on specific brands, egg size, and mozzarella type used.

Tips & Variations

Squeeze every drop from that zucchini. The number one reason egg bakes turn watery is zucchini releasing moisture during baking. Cooking the zucchini hard in the skillet first is essential, but if you want extra insurance, press the diced pieces in a clean kitchen towel for a minute before they hit the pan. A dry zucchini means a firm, sliceable frittata that holds up all week.

Swap the crumble for a different crunch. If you are out of almond flour, crushed pork rinds work beautifully here for zero additional carbs — though the almond flour version keeps the recipe fully vegetarian. You can also substitute finely chopped walnuts or hemp hearts mixed with the Parmesan and butter for a nuttier texture.

Watch for hidden carbs in sun-dried tomatoes. Oil-packed sun-dried tomatoes have fewer carbs per gram than the dry-packed kind, but they still add up quickly because the sugars concentrate during drying. The 2-tablespoon amount in this recipe is carefully calibrated to add flavor without blowing your carb budget. Do not be tempted to dump in a generous handful, and always check the label since some brands add sugar.

Try different Italian cheese combinations. Swap half the mozzarella for cubed fontina, which melts even more lavishly, or use smoked mozzarella for a deeper, almost campfire-like flavor. Pecorino Romano can replace Parmesan in both the egg base and the crumble for a sharper, more assertive bite. Any combination keeps the macros nearly identical.

Cut smaller portions if 660 calories is too much for your morning. This recipe cuts cleanly into 6 rectangles instead of 4 squares, bringing each serving down to roughly 440 calories, 37 grams of fat, 23 grams of protein, and about 4 grams of net carbs. That smaller portion pairs well with a cup of bulletproof coffee or a side of sliced avocado to round out the meal.

Frequently Asked Questions

Is this frittata truly keto-friendly at 6 grams of net carbs?
Yes, 6 grams of net carbs per serving sits well within the standard keto threshold of under 20 grams per day, leaving plenty of room for the rest of your meals. The majority of carbs come from the zucchini, cream cheese, and mozzarella — all whole, real foods with excellent fat-to-carb ratios. If you want to push net carbs even lower, omit the sun-dried tomatoes entirely and you will drop to roughly 5 grams per serving with only a small flavor trade-off.
Can I use shredded low-moisture mozzarella instead of fresh mozzarella?
You can, and the macros stay nearly identical since both types have similar fat, protein, and carb profiles. The texture difference is noticeable though — low-moisture mozzarella melts into a more uniform, stretchy layer, while torn fresh mozzarella creates distinct gooey pockets surrounded by creamy egg custard. If using shredded, toss it with a teaspoon of almond flour first to prevent it from clumping together and sinking to the bottom of the dish during baking.
How long does the frittata last in the fridge, and can I freeze it?
Refrigerated in an airtight container, the squares stay fresh for up to 5 days. The texture actually improves after a night in the fridge as the flavors meld and the egg firms up for cleaner slicing. For freezing, wrap each cooled square tightly in parchment paper and then aluminum foil, and freeze for up to 2 months. Thaw overnight in the fridge and reheat as directed. The crumble topping softens slightly after freezing, so a quick minute under the broiler restores the crunch.
How would I make this dairy-free for vegan keto?
A fully dairy-free version requires several swaps: replace the mozzarella with a plant-based mozzarella that melts well, use coconut cream instead of heavy cream, and substitute vegan cream cheese for the dairy cream cheese. Nutritional yeast mixed into the almond flour crumble replaces the Parmesan flavor. The fat and calorie profile shifts depending on brands, so recalculate your macros. The egg base remains the structural backbone, so this adaptation works for dairy-free vegetarians but not for strict vegans unless you also swap in a tofu-based egg replacement, which changes the recipe substantially.
My frittata sank in the center after baking — what went wrong?
A slight sinking in the center is completely normal and does not mean the frittata is undercooked. Eggs puff up from steam during baking and deflate as they cool, especially in a thick slab like this one. If the center sank dramatically and still looks wet or jiggly, the oven temperature may be running low — use an oven thermometer to verify 350°F. Overbaking to prevent sinking is a worse outcome because it makes the eggs rubbery. Pull the frittata when the edges are fully set and the center has only the faintest wobble. It will firm up completely during the 10-minute rest.