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.
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
Instructions
🔧 Equipment
- 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.)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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).
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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)
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?
The top is beautifully golden but the center is still liquid after the full bake time. What should I do?
My bread pudding has a rubbery, almost scrambled-egg texture instead of a silky custard. What happened?
The chocolate hazelnut spread completely disappeared into the pudding and I can not taste or see it. How do I fix this?
Can I bake this without soaking it overnight? I forgot to prep it the day before.
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.






