Cinnamon and Cream

Chocolate Hazelnut Croissant Bread Pudding with Espresso Custard

21 min read

↓ Jump to Recipe

Imagine pulling apart a warm, custardy square of bread pudding to find ribbons of melted chocolate hazelnut spread running through pillowy layers of croissant, the edges crisp and caramelized, the center impossibly soft. That is exactly what this recipe delivers. It sits somewhere between a decadent French dessert and a luxurious weekend brunch centerpiece, and honestly, it works beautifully for both. The smell alone, a heady mix of toasted hazelnuts, dark chocolate, and espresso-laced custard, will have everyone hovering near the kitchen long before it is ready to serve.

What makes this version genuinely special is the choice of croissants as the base. Day-old croissants are not just a convenient shortcut; they are the single best bread you can use for bread pudding. Their laminated, buttery layers soak up the custard without turning to mush, and the pockets created by those flaky folds hold little puddles of melted chocolate hazelnut spread throughout the bake. A shot of espresso added to the custard deepens the chocolate flavor without making the dish taste like coffee, and toasting the hazelnuts before folding them in brings out a warm, nutty complexity that raw nuts simply cannot match.

This recipe sits at a medium difficulty level, largely because of the overnight soaking step, which requires a little forward planning but does most of the work for you. It is perfect for home bakers who want to impress guests at a dinner party or holiday brunch, and it is genuinely forgiving. If your custard soaks in unevenly or your croissants are different sizes, it will still come out beautifully. If you have a 9×13-inch baking dish and a handful of day-old croissants, you are already most of the way there.

Prep: 30 minutes (plus 8 hours or overnight soaking)Total: 9 hours 30 minutes (mostly hands-off soaking)Yield: one 9×13-inch baking dish, cut into 12 portionsDifficulty: ★★☆ IntermediateOccasion: Special Occasion
✓ Vegetarian
Servings:

12

servings

Ingredients

  • Greasing The Pan
  • 8 largeday-old croissants (about 600g total), torn or cut into roughly 2-inch pieces
  • 200 gchocolate hazelnut spread, such as Nutella (about 3/4 cup), divided
  • 100 ghazelnuts (about 3/4 cup), roughly chopped and toasted
  • 100 gdark chocolate (60 to 70% cacao), roughly chopped (about 3/4 cup chopped)
  • 480 mlwhole milk (about 2 cups)
  • 480 mlheavy cream (about 2 cups)
  • 6 largeeggs
  • 150 ggranulated sugar (about 3/4 cup)
  • 30 mlfreshly brewed strong espresso or very strong coffee (about 2 tablespoons), cooled
  • 2 tsppure vanilla extract
  • 0.5 tspfine sea salt
  • 0.5 tspground cinnamon
  • 30 gunsalted butter (about 2 tablespoons)
  • Dusting (optional)
  • 2 tbsppowdered sugar
  • Finishing (optional)
  • Flaky sea salt

Ingredient Substitutions

croissants

  • Brioche loaf cut into 1-inch cubes: slightly less flaky but equally rich and absorbs custard beautifully, no texture change needed
  • Challah bread cut into 1-inch cubes: a slightly lighter result with a more traditional bread pudding texture, works very well
heavy cream

  • Full-fat coconut cream (canned): gives a mild coconut undertone and makes the dish dairy-free when combined with oat or soy milk in place of whole milk
  • Half-and-half in place of both cream and milk: reduces richness slightly but still produces a lovely, set custard
whole milk

  • Full-fat oat milk or soy milk: the higher fat content of these plant milks makes them the closest swap, though the custard will be slightly less rich
  • 2% milk: works fine with minimal difference in the final result
chocolate hazelnut spread

  • Homemade chocolate hazelnut spread or any nut-based chocolate spread: use in equal amounts
  • Dark chocolate ganache (equal parts melted chocolate and cream): dollop between layers for a less sweet, more intensely chocolatey result
hazelnuts

  • Pecans or walnuts: both complement chocolate beautifully and can be swapped 1 to 1
  • Almonds, roughly chopped: a slightly firmer texture, still delicious and widely available
espresso

  • 1/2 teaspoon instant espresso powder dissolved in 2 tablespoons hot water: identical flavor result
  • Omit entirely: the pudding will be slightly less complex but still delicious; increase vanilla to 1 tablespoon to compensate

Instructions

🔧 Equipment

🧁9×13-inch baking dish
🥣large mixing bowl
🌀whisk
🐢6-quart oval slow cooker (for slow cooker method)
💨6-ounce ramekins (for air fryer method)
💨air fryer with basket (for air fryer method)
📋baking sheet (for toasting hazelnuts)
🍳dry skillet (for stovetop hazelnut toasting)
🧁plastic wrap
🧁fine mesh sieve (optional, for straining custard)
🌡️instant-read thermometer (optional but recommended)
📄parchment paper
🔵cooling rack



Prep: 30 minutes (plus 8 hours or overnight soaking)
Bake: 50 minutes at 325°F (165°C)
Total: 9 hours 30 minutes (includes overnight soak)
  1. Toast the hazelnuts: Spread the chopped hazelnuts on a dry baking sheet and toast in a 350°F (175°C) oven for 8 to 10 minutes, stirring once halfway, until fragrant and lightly golden. Remove and let cool completely. (You can do this the day before.)
  2. Grease a 9×13-inch baking dish generously with the butter. Arrange half the croissant pieces in the dish in an even layer. Drop half the chocolate hazelnut spread in small teaspoon-sized dollops across the croissants. Scatter half the toasted hazelnuts and half the chopped dark chocolate over the top. Add the remaining croissant pieces, then repeat with the remaining chocolate hazelnut spread, hazelnuts, and chopped chocolate.
  3. Make the custard: In a large mixing bowl, whisk together the eggs and granulated sugar until pale and slightly thickened, about 1 minute. Whisk in the whole milk, heavy cream, cooled espresso, vanilla extract, fine sea salt, and ground cinnamon until fully combined and smooth.
  4. Pour the custard slowly and evenly over the layered croissants, pressing the croissants down gently with the back of a spoon to help them begin absorbing the liquid. Cover the dish tightly with plastic wrap and refrigerate for at least 8 hours or overnight. This soaking step is not optional; it is what transforms the croissants into a fully saturated, cohesive pudding.
  5. When ready to bake, remove the dish from the refrigerator and let it sit at room temperature for 30 minutes. Preheat your oven to 325°F (165°C). Remove the plastic wrap. If any croissant pieces are sticking up dry, press them down gently into the custard.
  6. Bake uncovered for 45 to 50 minutes, until the custard is set around the edges and just barely jiggles in the very center when you gently shake the dish, and the top is deep golden brown and puffed. A knife inserted 2 inches from the edge should come out clean; the very center can have a slight wobble as it will continue to set as it rests.
  7. Remove from the oven and let rest for at least 15 minutes before serving. Dust with powdered sugar and a pinch of flaky sea salt if desired. Serve warm, with whipped cream, vanilla ice cream, or a drizzle of extra chocolate hazelnut spread.
Prep: 30 minutes (plus 8 hours or overnight soaking)
Bake: 2 hours 30 minutes to 3 hours on Low
Total: 9 hours 30 minutes to 10 hours (includes overnight soak)
The slow cooker produces a softer, more uniformly custardy texture with no crispy top, which some people actually prefer. It is ideal when your oven is occupied, or for a hands-off holiday morning. Use a 6-quart oval slow cooker for best results.
  1. Toast the hazelnuts on the stovetop: Place them in a dry skillet over medium heat and cook, stirring frequently, for 4 to 6 minutes until fragrant and golden. Watch carefully as they can burn quickly. Set aside to cool.
  2. Line the insert of a 6-quart oval slow cooker with a large sheet of parchment paper, leaving some overhang on the sides to help lift the pudding out later. Lightly grease the parchment with butter. Layer half the croissant pieces in the bottom, dot with half the chocolate hazelnut spread, and scatter with half the hazelnuts and chopped chocolate. Add the remaining croissants and repeat the layering.
  3. Whisk together the eggs, sugar, whole milk, heavy cream, cooled espresso, vanilla, salt, and cinnamon in a large bowl until smooth. Pour the custard over the croissants, pressing the pieces down gently. Cover and refrigerate overnight (with the slow cooker insert inside the refrigerator, or transfer to a covered bowl and assemble in the morning).
  4. If the mixture was refrigerated in a bowl, transfer it to the prepared slow cooker insert in the morning. Place a double layer of paper towels or a clean kitchen towel under the lid before securing it; this absorbs condensation and prevents water from dripping onto the pudding, which would make the top soggy.
  5. Cook on Low for 2 hours 30 minutes to 3 hours. The pudding is done when the edges are fully set and the center has only a slight jiggle. Avoid lifting the lid in the first 2 hours. The top will not brown; this is expected.
  6. Turn off the slow cooker, remove the lid and paper towels, and let the pudding rest for 20 minutes before lifting it out using the parchment overhang. Dust with powdered sugar and flaky salt before serving. For a lightly browned top, slide the dish under a broiler set to high for 2 to 3 minutes before resting.
Prep: 30 minutes (plus 8 hours or overnight soaking)
Bake: 18 to 20 minutes at 300°F (150°C)
Total: 9 hours (includes overnight soak), plus 20 minutes bake per batch
This method is best for making individual portions rather than the full batch. It gives beautifully crisp, caramelized tops and gooey centers in a fraction of the oven time. Use 6-ounce ramekins or oven-safe silicone cups that fit your air fryer basket. You will need to bake in batches.
  1. Toast the hazelnuts in the air fryer basket at 350°F (175°C) for 4 to 5 minutes, shaking once halfway through. Watch closely as they toast faster than in an oven. Let cool completely.
  2. Prepare the croissant pieces and custard exactly as in the oven method. Lightly butter 6 to 8 individual 6-ounce ramekins. Fill each ramekin about halfway with croissant pieces, add a small dollop of chocolate hazelnut spread, a pinch of hazelnuts, and a few chocolate chunks. Top with more croissant pieces and repeat the layering.
  3. Pour the custard evenly over each filled ramekin, filling to just below the rim. Press the croissant pieces down gently to help them absorb the custard. Cover each ramekin tightly with plastic wrap and refrigerate for at least 8 hours or overnight.
  4. When ready to cook, remove the ramekins from the refrigerator 20 minutes before baking. Preheat your air fryer to 300°F (150°C) for 3 minutes. Place as many ramekins as will comfortably fit in the basket without touching.
  5. Air fry at 300°F (150°C) for 18 to 20 minutes, until the tops are deep golden and slightly puffed and the custard is set around the edges. Check at 15 minutes; if the tops are browning very quickly, loosely tent with a small square of foil. The centers should have just a slight wobble.
  6. Carefully remove the hot ramekins and let rest for 10 minutes before serving directly in the ramekins. Dust with powdered sugar, a pinch of flaky salt, and serve with a spoonful of whipped cream or a scoop of vanilla ice cream.

Nutrition Per Serving

Per 1 serving (makes one 9×13-inch baking dish, cut into 12 portions)

540Calories
48gCarbs
28gSugar
33gFat
11gProtein

Why This Recipe Works

The overnight soak is the most important technique in this recipe, and it is worth understanding why. Custard is essentially an egg-and-dairy emulsion that sets through gentle heat, causing the egg proteins to coagulate and trap liquid in a tender, silkable network. For this to happen evenly throughout a thick dish of bread, the bread needs to fully saturate before it ever goes into the oven. A short soak of 30 minutes will leave dry pockets in the center; overnight gives the custard time to travel through the croissants’ layered structure completely, so every bite is equally rich and cohesive. Cold soaking in the refrigerator also slows fermentation and keeps the eggs stable, so the pudding bakes from a consistent starting point.

Croissants are uniquely suited to this application because of their laminated dough structure. During lamination, butter is folded repeatedly into the dough to create hundreds of distinct layers separated by thin films of fat. These layers create small internal chambers that act like sponges for the custard, holding onto liquid while still maintaining enough structure to stay distinct during baking. The butter already present in the croissant also enriches the custard from the inside out, which is why croissant bread pudding tastes noticeably richer than versions made with plain white bread. The baking temperature of 325°F (165°C) is deliberately low; high heat would cause the eggs to seize and scramble before the center fully sets, resulting in a rubbery or curdled texture. Low and slow allows the custard to set gently from the edges inward.

The small amount of espresso in the custard works on a flavor chemistry level: coffee contains compounds that bind to and amplify bitter chocolate notes while suppressing some of the sweetness, making the chocolate taste more complex and intense without the dish tasting like coffee at all. This is the same principle behind adding espresso to chocolate cake batter. If your finished pudding seems slightly underdone in the center even after the full bake time, it is most likely because your dish ran cold from the refrigerator; always give it that 30-minute rest at room temperature before baking. If your top is browning too quickly before the center sets, tent loosely with foil for the last 15 minutes of baking.

Baker’s Tips

  • Use genuinely stale, day-old croissants. Fresh croissants are too soft and will disintegrate rather than absorb. If your croissants are fresh, spread the torn pieces on a baking sheet and let them dry uncovered at room temperature for 4 to 6 hours, or dry them in a 250°F (120°C) oven for 15 minutes.
  • Do not skip the overnight soak. Even a minimum of 8 hours makes a significant difference in the final texture. A 4-hour soak will work in a pinch, but the center will be less evenly custardy.
  • When dolloping the chocolate hazelnut spread, slightly warm the jar in a bowl of hot water for a few minutes first. This makes it much easier to drop in small spoonfuls without dragging the croissant pieces around.
  • Press the croissants down firmly into the custard before refrigerating, and press them down again just before baking. Any pieces sitting above the custard will dry out rather than bake into the pudding.
  • Let the pudding rest for at least 15 minutes after baking before cutting. Like any custard, it continues to set as it cools. Cutting too early will result in a very loose, runny center, even if the pudding is fully cooked.
  • For a restaurant-style presentation, warm individual portions and serve with a quenelle of softly whipped cream, a scoop of hazelnut gelato, or a side of warm chocolate sauce.

Variations

  • Dark Cherry and Chocolate: Add 150g of pitted fresh or jarred sour cherries (drained) between the croissant layers alongside the chocolate hazelnut spread for a Black Forest-inspired version.
  • Orange and Chocolate: Add 1 tablespoon of fresh orange zest to the custard and replace the espresso with 1 tablespoon of Grand Marnier or fresh orange juice for a bright, citrusy contrast to the chocolate.
  • Salted Caramel Drizzle: Drizzle 80ml of warm salted caramel sauce over the pudding in the final 10 minutes of baking for a sticky, caramelized top layer.
  • Nut-Free Version: Omit the hazelnuts entirely and replace the chocolate hazelnut spread with a good-quality chocolate spread or dark chocolate ganache. The result is still deeply chocolatey and indulgent.

Troubleshooting & FAQ

My custard never seemed to absorb into the croissants even after soaking overnight. What went wrong?
This usually happens when the croissants were too fresh and still very soft, causing them to compact and block absorption rather than soak up the liquid. It can also happen if the pieces were too large or tightly packed. For your next attempt, make sure the croissants are properly stale, tear them into smaller 2-inch pieces, and press them down firmly into the custard before refrigerating. Give the dish a gentle press every few hours if you can.
The top is beautifully golden but the center is still liquid after the full bake time. What should I do?
Tent the dish loosely with foil to stop the top from over-browning, and continue baking in 10-minute increments until the center has only a slight jiggle. This is most commonly caused by the dish being too cold going into the oven (skip straight from fridge to oven) or an oven that runs cool. An oven thermometer is invaluable here. Also double-check that your baking dish is no larger than 9×13 inches; a larger dish spreads the pudding too thin and can affect timing.
My bread pudding has a rubbery, almost scrambled-egg texture instead of a silky custard. What happened?
This is caused by baking at too high a temperature or for too long. Egg proteins tighten and become rubbery when they reach above approximately 185°F (85°C). Make sure your oven is set to 325°F (165°C) and use an oven thermometer to verify, as many home ovens run hot. Also remove the pudding as soon as the center has a gentle wobble; residual heat will finish the job.
The chocolate hazelnut spread completely disappeared into the pudding and I can not taste or see it. How do I fix this?
The spread melts into the custard during the long soak, especially if it was already quite warm or liquid. To maintain distinct swirls of flavor, add an extra layer of dollops directly on top of the soaked croissants just before baking, after the overnight rest. This ensures some spread stays close to the surface and caramelizes into the top layer during baking.
Can I bake this without soaking it overnight? I forgot to prep it the day before.
A minimum 2-hour room-temperature soak will work as an emergency measure, though the texture will be less even. Place the assembled dish at room temperature (not in the refrigerator) and press the croissants down firmly every 30 minutes to encourage absorption. Expect the center to be slightly less cohesive and the outer edges to be more custardy than the middle. Baking low and slow at 325°F (165°C) with a foil tent for the first 20 minutes will help.

Storage & Make-Ahead

  • Storage: Store leftovers covered tightly in the refrigerator for up to 4 days. Reheat individual portions in the microwave for 60 to 90 seconds, or in a 325°F (165°C) oven for 10 to 12 minutes until warmed through. The pudding can also be frozen after baking: cut into portions, wrap individually in plastic wrap, and freeze for up to 2 months. Thaw overnight in the refrigerator and reheat in the oven.
  • Make-Ahead: This recipe is designed to be made ahead. The entire assembled, unbaked pudding can sit in the refrigerator for up to 24 hours before baking, making it ideal for entertaining. The hazelnuts can be toasted up to 5 days in advance and stored in an airtight container at room temperature.


Leave a Comment