Overnight Breakfast Casserole for Holiday Mornings
I assemble this sausage and cheese breakfast casserole the night before, slide it in the oven while the coffee brews, and it feeds eight people without me standing at the stove.

Every Christmas morning I make the same thing, and it is not pancakes. It is a bread and egg casserole I put together the night before in about fifteen minutes, so the only thing I do before coffee is turn on the oven. If you have ever tried to scramble eggs for nine people while someone asks where the tape is, you already know why.
This is the version I have landed on after a lot of soggy attempts. Day-old bread, browned sausage, sharp cheddar, and a custard that sets up instead of weeping.
Prep time: 20 minutes · Chill: 8 to 24 hours · Bake time: 55 to 65 minutes · Rest: 10 minutes · Total: about 9 hours, mostly hands-off · Serves: 8 to 10
What you will need
- 1 pound bulk pork breakfast sausage (or links with the casings removed)
- 10 cups day-old crusty bread, cut into 1-inch cubes (about one 1-pound loaf of French or sourdough)
- 10 large eggs
- 3 cups whole milk
- 1/2 cup heavy cream
- 8 ounces sharp cheddar, shredded (about 2 packed cups)
- 4 ounces Gruyère or Swiss, shredded (about 1 cup)
- 1 medium yellow onion, diced
- 1 red bell pepper, diced
- 2 teaspoons Dijon mustard
- 1 1/2 teaspoons kosher salt
- 1 teaspoon black pepper
- 1/2 teaspoon garlic powder
- 1/4 teaspoon freshly grated nutmeg (optional, but it does something)
- 3 tablespoons chopped fresh chives or parsley, for serving
- Butter for the dish
Shred the cheese yourself if you have five spare minutes. Pre-shredded cheese is coated with starch to keep it from clumping, and in a custard that starch turns slightly grainy. Not ruinous, just noticeable.
How I make it
- Dry the bread if it is fresh. Spread the cubes on two sheet pans and bake at 300°F (150°C) for 15 minutes, tossing once. They should feel dry on the outside but still have a little give. Fresh bread is the single most common reason these casseroles turn to pudding. Let the cubes cool.
- Brown the sausage. Cook it in a large skillet over medium heat, breaking it into bite-size pieces, until no pink remains, 8 to 10 minutes. Scoop it onto a paper-towel-lined plate with a slotted spoon and leave about a tablespoon of fat behind.
- Cook the vegetables. Add the onion and bell pepper to that same skillet and cook over medium heat until softened and just starting to color, 6 to 8 minutes. Scrape up the browned bits from the sausage while you stir. Let everything cool for 10 minutes so it does not start cooking the eggs.
- Layer it. Butter a 9×13-inch baking dish. Put in half the bread, half the sausage, half the vegetables, and about a third of each cheese. Repeat with the remaining bread, sausage, vegetables, and another third of the cheese. Hold back the last third.
- Make the custard. Whisk the eggs in a large bowl until the yolks and whites are fully combined and no streaks are left. Whisk in the milk, cream, Dijon, salt, pepper, garlic powder, and nutmeg.
- Pour and press. Pour the custard evenly over the dish. Press the bread down with your palm or the back of a spatula for a few seconds so every cube gets wet. This step matters. Dry cubes on top go leathery instead of crisp.
- Chill. Cover tightly with plastic wrap or foil and refrigerate at least 8 hours and up to 24. Any less than 8 and the bread centers stay dry.
- Bake. Pull the dish out of the fridge and let it sit on the counter while the oven heats to 350°F (175°C), about 30 minutes. Uncover, scatter the last of the cheese over the top, and bake 55 to 65 minutes. It is done when the center is puffed, the top is deep golden, and an instant-read thermometer in the middle reads 160°F. A knife slid into the center should come out clean, not wet.
- Rest 10 minutes before cutting, then scatter the chives over the top. The custard firms up as it sits, and slices hold their shape instead of sliding apart.

The two things that go wrong
Soggy bottom. This is almost always fresh bread, too much liquid, or not enough chill time. The ratio I use is 10 eggs to 3 1/2 cups of dairy for a 9×13 dish packed with 10 cups of bread. If you swap in a softer loaf like challah or brioche, cut the milk back by a half cup, because those breads carry more moisture to begin with.
Burned top, raw middle. Your oven runs hot, or the dish went in straight from the refrigerator while the oven was already at temperature. Cold glass in a hot oven also risks cracking. If the top is browning hard before the 45-minute mark, tent it loosely with foil and keep baking until the center hits 160°F.
Swaps that actually work
Swap the pork sausage for a pound of bulk turkey sausage, or for 8 ounces of thick-cut bacon cooked until crisp and crumbled. If you go meatless, use 10 ounces of sliced cremini mushrooms cooked hard in butter until the moisture has cooked off and they squeak in the pan, plus a cup of thawed, very well squeezed frozen spinach. Wet vegetables are what makes a vegetarian version watery, so squeeze more than feels necessary.
For cheese, sharp cheddar is the one I would not change. The Gruyère is there for nuttiness and good melt, and Swiss, fontina, or Monterey Jack all stand in fine. Skip fresh mozzarella, which releases too much water.
Whole milk and cream give the sweetest, sturdiest custard. Two percent works. Skim gives you something closer to a savory bread pudding with a thin, slightly rubbery set, so if skim is what you have, add an extra egg yolk.
Hash browns instead of bread: use a 30-ounce bag of frozen shredded hash browns, thawed and pressed dry in a clean towel, and reduce the milk to 2 1/2 cups. The bake time stays about the same.

Timing it for a holiday morning
I assemble between 8 and 10 the night before. On Christmas morning the oven goes on at 7:30, the dish comes out of the fridge at the same time, it goes in at 8:00 and comes out at about 9:05. Resting takes it to 9:15, which is when people actually sit down.
If you also have cinnamon rolls or a coffee cake, bake the casserole first. It holds its heat well under foil for 30 minutes on the counter, and a hot oven at 350°F is friendly to most baked goods you would serve alongside.
Doubling for a crowd: two separate 9×13 dishes beat one giant roasting pan every time. A deeper pan means the outside sets long before the center gets there. Two dishes on the same rack, rotated halfway through, add maybe 10 minutes to the bake.
Leftovers and reheating
Cool leftovers to room temperature within two hours, then cover and refrigerate up to 4 days. Reheat individual squares in the microwave at 50 percent power for 90 seconds to 2 minutes, which keeps the eggs from going tough, or in a 325°F (160°C) oven for 15 to 20 minutes covered with foil.
It also freezes well after baking. Cut it into portions, wrap each one in plastic and then foil, and freeze up to 2 months. Thaw overnight in the refrigerator before reheating. I do not recommend freezing it unbaked, because the bread turns spongy and the custard separates on thawing.
One last thing about the dish itself: if you assembled it in a glass or ceramic 9×13 and want to cut the morning wait, you can set the cold dish in the cold oven and turn the heat on to 350°F, letting them come up together. Add about 10 minutes to the bake time and still check for 160°F in the center.



