Love this? Pin it for later!
There's something magical about winter mornings when the world outside is hushed under a blanket of frost, and your kitchen becomes the warmest, most inviting place on earth. This breakfast casserole has become my weekend tradition—born from those lazy Saturday mornings when my family lingers in pajamas, sipping coffee while the aroma of sizzling potatoes and melting cheese fills our home.
I created this recipe during the first snowfall last year, when the pantry held little more than potatoes, a wilting bag of spinach, and the usual breakfast staples. What started as a "clean out the fridge" experiment has become the most requested dish in our household. The golden, crispy potato base cradles tender spinach and fluffy eggs, while pockets of gooey cheese create those irresistible cheesy pulls that make everyone gather around the table.
What makes this casserole truly special is its forgiving nature—it welcomes substitutions, forgives imprecise measurements, and somehow tastes better when shared with sleepy loved ones on cold mornings. Whether you're hosting a holiday brunch or simply want to meal-prep breakfasts for busy weekdays, this dish delivers comfort in every bite.
Why This Recipe Works
- Perfect Texture Balance: Crispy potato hash brown base meets creamy egg custard for the ultimate textural contrast in every forkful
- Nutrient-Packed Powerhouse: Loaded with iron-rich spinach and protein-packed eggs to fuel your morning without the post-breakfast crash
- Make-Ahead Marvel: Assemble the night before and simply pop in the oven for effortless entertaining
- Feed-a-Crowd Friendly: One 9x13 dish serves 8-10 hungry guests, perfect for holiday mornings or brunch gatherings
- Customizable Canvas: Swap cheeses, add bacon or mushrooms, make it dairy-free—the base recipe welcomes creativity
- Leftover Champion: Reheats beautifully for up to 5 days, making weekday breakfasts feel special
- Budget-Conscious Comfort: Uses affordable pantry staples to create restaurant-quality results at home
Ingredients You'll Need
The beauty of this casserole lies in its humble ingredients, each playing a crucial role in creating morning magic. Let's explore what makes each component shine and how to select the best quality ingredients for maximum flavor impact.
Frozen Hash Browns (30 oz): The foundation of our casserole, these pre-shredded potatoes save precious morning prep time. Look for packages without added oils or seasonings for the purest potato flavor. If you prefer fresh, shred 2 pounds of russet potatoes and soak them in cold water for 30 minutes to remove excess starch, then dry thoroughly.
Fresh Baby Spinach (8 cups): This nutritional powerhouse wilts down to create tender green ribbons throughout the casserole. Buy organic when possible, and look for crisp leaves without yellowing. If baby spinach isn't available, substitute with chopped regular spinach or even kale—just remove the tough stems first.
Large Eggs (10): The binding agent that transforms our ingredients into a cohesive, sliceable breakfast. Room temperature eggs incorporate more smoothly, so set them out 30 minutes before cooking. For the fluffiest texture, I recommend organic, free-range eggs—they have brighter yolks and richer flavor.
Whole Milk (2 cups): Creates the luxurious custard that keeps everything moist. Whole milk provides the richest results, but 2% works in a pinch. For a dairy-free version, substitute with unsweetened oat milk or cashew milk for similar creaminess.
Sharp Cheddar Cheese (2 cups): Adds bold, tangy flavor that cuts through the richness. Buy a block and shred it yourself—pre-shredded cheese contains anti-caking agents that prevent smooth melting. Extra-sharp aged cheddar provides the most pronounced flavor.
Monterey Jack Cheese (1 cup): Melts into gloriously gooey pockets throughout the casserole. Its mild flavor balances the sharp cheddar perfectly. Pepper Jack adds a pleasant heat if your family enjoys spice.
How to Make Breakfast Casserole with Potatoes and Spinach for Slow Winter Mornings
Prep Your Baking Dish and Preheat
Position your oven rack in the center and preheat to 375°F (190°C). Generously butter a 9x13-inch baking dish, ensuring every corner is well-greased to prevent sticking. For extra insurance against sticking, line the bottom with parchment paper, leaving an overhang on two sides for easy removal.
Create the Perfect Potato Base
In a large skillet, heat 3 tablespoons of butter over medium-high heat until foaming. Add the frozen hash browns in an even layer and resist the urge to stir for 5-7 minutes until the bottom develops a golden crust. Season with 1 teaspoon salt, ½ teaspoon black pepper, and ½ teaspoon garlic powder. Flip sections of potatoes and continue cooking another 5 minutes until golden in spots. This pre-cooking step ensures crispy potatoes instead of soggy ones.
Wilt the Spinach to Perfection
While potatoes cook, heat 1 tablespoon olive oil in a separate large skillet over medium heat. Add 2 minced garlic cloves and cook 30 seconds until fragrant. Working in batches if necessary, add spinach with just the water clinging to leaves after washing. Toss constantly for 2-3 minutes until wilted but still bright green. Transfer to a colander and press out excess moisture—this prevents a watery casserole. Roughly chop the wilted spinach.
Build the Flavor Foundation
Transfer the crispy potatoes to your prepared baking dish, pressing them gently into an even layer that extends up the sides slightly. This creates a potato "crust" that holds everything together. Scatter the chopped spinach evenly over the potatoes, followed by 1½ cups of the shredded cheddar and all the Monterey Jack cheese. Reserve the remaining cheddar for the top.
Whisk the Ultimate Custard Base
In a large bowl, whisk together eggs, milk, 1 teaspoon salt, ½ teaspoon black pepper, ½ teaspoon Dijon mustard, and a pinch of nutmeg until completely smooth. The mustard enhances the egg flavor without being detectable. For extra richness, substitute ½ cup of the milk with heavy cream. Pour this custard slowly and evenly over the layered ingredients in your baking dish.
Add the Finishing Touches
Sprinkle the remaining ½ cup cheddar cheese over the top. For extra crunch and visual appeal, add ¼ cup grated Parmesan and 2 tablespoons of everything bagel seasoning. Gently press down with a spatula to ensure everything is submerged in the custard. Let the casserole rest for 15 minutes before baking—this allows the potatoes to absorb some custard for better cohesion.
Bake to Golden Perfection
Place the baking dish on a foil-lined baking sheet to catch any potential overflow. Bake uncovered for 45-50 minutes until the center is just set with a slight jiggle, and the top is golden brown. If the top browns too quickly, tent loosely with foil for the final 15 minutes. The casserole is done when a knife inserted 2 inches from the edge comes out clean.
Rest and Serve for Clean Slices
Resist the temptation to cut immediately! Let the casserole rest for 10-15 minutes—this crucial step allows the custard to set properly for clean, beautiful slices. During this time, the residual heat finishes cooking the center without over-baking the edges. Garnish with fresh chives or parsley for a pop of color and freshness.
Expert Tips
Temperature Matters
Bring eggs and milk to room temperature 30 minutes before mixing. Cold dairy can cause the butter in your potatoes to seize, creating an uneven texture.
Cheese Selection Secrets
Avoid pre-shredded cheese—it contains cellulose that prevents smooth melting. Shred your own for the creamiest, most luxurious texture.
Moisture Management
Squeeze wilted spinach in a clean kitchen towel to remove excess water. Extra moisture is the enemy of a custardy, not soggy, casserole.
Make-Ahead Magic
Assemble completely, cover tightly, and refrigerate up to 24 hours. Add 10-15 minutes to baking time when starting from cold.
Serving Suggestions
Pair with fresh fruit salad and mimosas for brunch, or serve with hot sauce and avocado slices for a hearty weekend breakfast.
Freezer Success
Bake completely, cool, then freeze individual portions. Wrap tightly and freeze up to 3 months. Reheat in microwave for 2-3 minutes.
Variations to Try
Meat Lover's Dream
Add 1 cup cooked and crumbled breakfast sausage or bacon. Layer between the potatoes and spinach for even distribution.
Mediterranean Style
Swap cheddar for feta, add sun-dried tomatoes and olives, and season with oregano and lemon zest for bright, briny flavors.
Southwestern Twist
Add roasted poblano peppers, substitute pepper jack cheese, and include 1 teaspoon cumin and smoked paprika.
Dairy-Free Option
Use coconut milk and nutritional yeast for creaminess, and dairy-free cheese shreds that melt well.
Veggie Loaded
Add sautéed mushrooms, bell peppers, and zucchini for extra nutrition and flavor complexity.
Sweet Potato Swap
Replace half the hash browns with diced roasted sweet potatoes for added nutrients and natural sweetness.
Storage Tips
Refrigerator Storage
Cool completely, then cover tightly with plastic wrap or transfer to airtight containers. Store in the refrigerator for up to 5 days. To maintain the best texture, place a paper towel under the lid to absorb excess moisture. Reheat individual portions in the microwave for 60-90 seconds, or warm larger portions in a 325°F oven for 15-20 minutes.
Freezer Instructions
Wrap individual portions tightly in plastic wrap, then aluminum foil, and freeze up to 3 months. For best results, freeze the casserole unbaked: assemble completely, wrap tightly with plastic wrap and foil, and freeze up to 2 months. Thaw overnight in the refrigerator before baking as directed, adding 15-20 minutes to the cooking time.
Make-Ahead Magic
Assemble the entire casserole up to 24 hours in advance. Cover tightly and refrigerate. The potatoes will continue to absorb flavors, resulting in an even more delicious dish. When ready to bake, remove from refrigerator 30 minutes before cooking, then bake as directed, adding 10-15 minutes to ensure it heats through completely.
Frequently Asked Questions
Absolutely! Use 2 pounds of russet potatoes, peeled and shredded. Soak the shreds in cold water for 30 minutes to remove excess starch, then drain and dry thoroughly with kitchen towels. This extra step removes surface starch that can make potatoes gummy and ensures they crisp up beautifully.
Excess moisture is usually the culprit. Be sure to squeeze wilted spinach until almost dry, and if using fresh potatoes, dry them thoroughly after shredding. Also, avoid over-measuring milk—use the exact amount specified. Finally, let the casserole rest 10-15 minutes after baking to allow the custard to set properly.
Yes! Unsweetened oat milk provides the creamiest results, while cashew milk offers richness without strong flavor. Coconut milk works but may impart a subtle coconut taste. For best results, use full-fat coconut milk diluted with water (¾ cup coconut milk + 1¼ cups water). Avoid almond milk as it can separate during baking.
The center should jiggle slightly when you gently shake the pan—it will continue cooking from residual heat. A knife inserted 2 inches from the edge should come out clean. If the top is browning too quickly before the center is set, tent loosely with foil and continue baking. The internal temperature should reach 165°F when measured with an instant-read thermometer.
Definitely! Cook 1 pound of breakfast sausage, bacon, or ham until just done, then drain on paper towels. Layer the cooked meat between the potatoes and spinach. For bacon lovers, reserve 2 tablespoons of bacon fat to cook the potatoes in place of butter for extra smoky flavor. Turkey sausage or vegetarian sausage crumbles work well too.
For individual portions, microwave on 70% power for 60-90 seconds until heated through. For larger portions or to maintain the best texture, reheat in a 325°F oven for 15-20 minutes. Cover with foil to prevent over-browning. Add a splash of milk before reheating to restore moisture if the casserole seems dry.
Breakfast Casserole with Potatoes and Spinach for Slow Winter Mornings
Ingredients
Instructions
- Prep: Preheat oven to 375°F (190°C). Butter a 9x13-inch baking dish.
- Cook potatoes: In a large skillet, heat butter over medium-high heat. Add hash browns, season with salt, pepper, and garlic powder. Cook 10-12 minutes until golden, flipping halfway through.
- Wilt spinach: In a separate skillet, heat olive oil and sauté garlic 30 seconds. Add spinach and cook 2-3 minutes until wilted. Squeeze out excess moisture and chop.
- Assemble: Layer potatoes in baking dish, top with spinach and 1½ cups cheddar plus all Monterey Jack.
- Make custard: Whisk eggs, milk, salt, pepper, mustard, and nutmeg until smooth. Pour over layered ingredients.
- Top and rest: Sprinkle remaining cheddar and optional toppings. Let rest 15 minutes.
- Bake: Bake 45-50 minutes until center is just set and top is golden. Rest 10-15 minutes before serving.
Recipe Notes
For make-ahead: Assemble completely, cover tightly, and refrigerate up to 24 hours. Add 10-15 minutes to baking time when starting from cold. Let rest 10-15 minutes after baking for clean slices.