Quick Recipe Version (TL;DR)
Quick Ingredients
- 1 pound artisan bread, cut into 1-inch cubes
- 8 ounces thick-cut bacon, chopped
- 12 ounces cremini mushrooms, sliced
- 1 large shallot, finely chopped
- 3 garlic cloves, minced
- 5 ounces baby spinach
- 2 teaspoons fresh thyme leaves
- 8 large eggs
- 1 1/2 cups heavy cream
- 1 1/2 cups whole milk
- 2 teaspoons Dijon mustard
- 1/4 cup chopped fresh parsley
- 1/4 teaspoon ground nutmeg
- 8 ounces Gruyère cheese, shredded
- 1 tablespoon unsalted butter
- 1 teaspoon kosher salt and 1/2 teaspoon black pepper
Do This
- 1. Toast the bread cubes at 300°F for 15 minutes; increase the oven temperature to 350°F.
- 2. Cook the bacon until crisp, then transfer it to a paper towel-lined plate.
- 3. Sauté the mushrooms and shallot in the bacon drippings; add the garlic, thyme, and spinach.
- 4. Whisk the eggs, cream, milk, Dijon, parsley, nutmeg, salt, and pepper.
- 5. Layer the bread, vegetables, bacon, and Gruyère in a buttered 9-by-13-inch baking dish, then pour over the custard.
- 6. Press the bread into the custard and let it soak for 30 minutes.
- 7. Bake covered for 25 minutes, uncover, and bake for 25 to 30 minutes more; rest for 10 minutes before serving.
Why You’ll Love This Recipe
- It combines a crisp, golden top with a rich and custardy center.
- Bacon, mushrooms, spinach, herbs, and nutty Gruyère make every bite deeply savory.
- You can assemble it the night before for an easy holiday breakfast or weekend brunch.
- It is filling enough to serve as the centerpiece of a breakfast or brunch spread.
Grocery List
- Produce: 12 ounces cremini mushrooms, 1 large shallot, 3 garlic cloves, 5 ounces baby spinach, fresh thyme, and fresh flat-leaf parsley
- Dairy: 8 large eggs, 1 1/2 cups heavy cream, 1 1/2 cups whole milk, 8 ounces Gruyère cheese, and 1 tablespoon unsalted butter
- Meat: 8 ounces thick-cut bacon
- Bakery: 1 pound crusty artisan bread, such as sourdough or country bread
- Pantry: Dijon mustard, kosher salt, black pepper, and ground nutmeg
Full Ingredients
For the Bread and Savory Filling
- 1 pound crusty artisan bread, such as sourdough or country bread, cut into 1-inch cubes, about 10 cups
- 1 tablespoon unsalted butter, softened, for greasing the baking dish
- 8 ounces thick-cut bacon, cut crosswise into 1/2-inch pieces
- 12 ounces cremini mushrooms, wiped clean and sliced 1/4 inch thick
- 1 large shallot, finely chopped, about 1/2 cup
- 3 garlic cloves, minced
- 2 teaspoons fresh thyme leaves
- 5 ounces baby spinach
- 8 ounces Gruyère cheese, shredded, about 2 cups
For the Egg Custard
- 8 large eggs
- 1 1/2 cups heavy cream
- 1 1/2 cups whole milk
- 2 teaspoons Dijon mustard
- 1/4 cup finely chopped fresh flat-leaf parsley, divided
- 1/4 teaspoon ground nutmeg
- 1 teaspoon kosher salt, divided
- 1/2 teaspoon freshly ground black pepper

Step-by-Step Instructions
Step 1: Dry the bread cubes
Arrange a rack in the center of the oven and preheat the oven to 300°F. Spread the bread cubes in a single layer on a large rimmed baking sheet. Bake for 15 minutes, stirring once halfway through, until the surface feels dry but the bread is not deeply browned. Dry bread absorbs the custard more evenly without becoming mushy. Remove the bread from the oven and increase the oven temperature to 350°F.
Step 2: Cook the bacon
Place the chopped bacon in a large skillet over medium heat. Cook for 8 to 10 minutes, stirring occasionally, until the fat has rendered and the bacon is crisp. Use a slotted spoon to transfer the bacon to a paper towel-lined plate. Reserve 2 tablespoons of the bacon for garnishing the finished casserole. Leave about 2 tablespoons of rendered bacon fat in the skillet and carefully discard any excess.
Step 3: Sauté the vegetables
Return the skillet to medium-high heat. Add the sliced mushrooms, spread them into an even layer, and sprinkle with 1/4 teaspoon of the kosher salt. Cook for 7 to 9 minutes, stirring only occasionally, until the mushrooms release their moisture and become well browned. Add the shallot and cook for 3 minutes, until softened. Stir in the garlic and thyme and cook for 30 seconds, just until fragrant.
Add the spinach a few handfuls at a time, tossing until each addition begins to wilt. Continue cooking for 2 to 3 minutes, until the spinach is wilted and any excess moisture has evaporated. Remove the skillet from the heat and let the mixture cool for 5 minutes.
Step 4: Whisk the custard
In a large mixing bowl, whisk the eggs until the yolks and whites are completely blended. Add the heavy cream, whole milk, Dijon mustard, 3 tablespoons of the parsley, nutmeg, the remaining 3/4 teaspoon kosher salt, and the black pepper. Whisk until smooth and evenly combined.
Step 5: Assemble the casserole
Coat the bottom and sides of a 9-by-13-inch baking dish with the softened butter. Place half of the toasted bread cubes in the dish. Top with half of the mushroom and spinach mixture, half of the bacon, and 3/4 cup of the shredded Gruyère. Repeat with the remaining bread, vegetables, and bacon, then scatter the remaining 1 1/4 cups Gruyère evenly over the top.
Slowly pour the egg custard over the casserole, moving around the dish so the liquid is evenly distributed. Gently press the bread down with the back of a spatula or clean hands, allowing it to absorb the custard without compacting it too firmly.
Step 6: Let the bread soak
Let the assembled bread pudding stand at room temperature for 30 minutes. Press the bread down gently two or three times during the soaking period so any dry pieces make contact with the custard. Meanwhile, confirm that the oven has reached 350°F. For easier handling and protection from spills, place the baking dish on a rimmed baking sheet.
Step 7: Bake until puffed and golden
Cover the baking dish loosely with aluminum foil and bake at 350°F for 25 minutes. Remove the foil and continue baking for 25 to 30 minutes, until the top is golden brown, the edges are puffed, and the center is just set. An instant-read thermometer inserted into the center should register at least 160°F. If the top needs more color, broil it 6 inches from the heat for 1 to 2 minutes, watching constantly.
Step 8: Rest and serve
Transfer the baking dish to a wire rack and let the bread pudding rest for 10 minutes. This allows the custard to settle so the casserole slices neatly while remaining soft and creamy inside. Sprinkle with the reserved bacon and remaining 1 tablespoon parsley. Serve warm in generous squares.
Pro Tips
- Use sturdy bread: Sourdough, French country bread, or another open-crumb artisan loaf will absorb the custard while keeping some texture. Avoid very soft sandwich bread.
- Cook away vegetable moisture: Let the mushrooms brown and allow the liquid from the spinach to evaporate. Excess water can make the custard loose or soggy.
- Shred your own cheese: Freshly shredded Gruyère melts more smoothly than pre-shredded cheese, which may contain anti-caking agents.
- Do not skip the soak: A full 30-minute soak gives the custard time to reach the center of the bread cubes. Very dry bread may benefit from an additional 10 minutes.
- Watch the center: The casserole is done when the center is softly set rather than completely firm. It will continue to cook slightly while resting.
Variations
- Vegetarian mushroom and leek: Omit the bacon, sauté 1 thinly sliced leek with the mushrooms in 1 tablespoon olive oil, and add an extra 4 ounces of mushrooms.
- Ham and asparagus: Replace the bacon with 8 ounces diced cooked ham and replace the spinach with 8 ounces chopped asparagus. Sauté the asparagus for 4 to 5 minutes before assembling.
- Cheddar and caramelized onion: Replace the Gruyère with sharp white cheddar and replace the shallot with 1 medium yellow onion cooked over medium-low heat for 20 to 25 minutes, until caramelized.
Storage & Make-Ahead
To make the casserole ahead, assemble it through Step 5, cover it tightly, and refrigerate for 8 to 12 hours. Remove it from the refrigerator 30 minutes before baking. Because a chilled casserole takes longer to heat through, plan to add 5 to 10 minutes to the covered baking time. Refrigerate cooked leftovers in an airtight container for up to 4 days. Reheat a covered portion in a 325°F oven for 15 to 20 minutes, or microwave an individual serving for 60 to 90 seconds. To freeze, wrap cooled individual portions tightly and freeze for up to 2 months. Thaw overnight in the refrigerator before reheating.
Nutrition (per serving)
Calories: 640 kcal | Carbs: 37g | Protein: 27g | Fat: 43g | Saturated Fat: 22g | Fiber: 3g | Sugar: 7g | Sodium: 1050mg | Cholesterol: 285mg
