Ingredients
Method
Make the Béchamel
- In a saucepan over medium heat, melt the butter. Add the flour and cook, stirring constantly, for about 1 minute, until it forms a pale paste and smells lightly nutty but does not brown. Slowly add the warm milk in several additions, whisking very well after each addition so no lumps form. Bring to a gentle simmer and cook for 3 to 5 minutes, whisking often, until the sauce thickens enough to coat the back of a spoon. Season with the salt, black pepper, and nutmeg. The béchamel should be thick and smooth, not loose. It needs enough body to sit on top of the sandwiches without running off completely. Cooking the flour into the butter first, before any liquid is added, coats each starch granule in fat — that coating is exactly what keeps the granules separate and prevents the clumping that would otherwise happen if flour met hot milk directly.
Prep the Bread
- Lightly butter one side of each slice of bread. If using Dijon, spread a very thin layer on the unbuttered side of 4 slices. Arrange the slices so assembly is easy. Only a thin layer of mustard is needed. It should support the ham and cheese, not dominate the sandwich. Keeping that mustard layer genuinely thin protects the balance between all the sandwich's richer components — a heavier hand would push the sharp mustard flavour into competing with the ham and cheese rather than quietly supporting them.
Lightly Toast the Bread
- Place the bread on a baking tray and toast lightly under a broiler or in a hot oven just until lightly golden at the edges, about 1 to 2 minutes per side if needed. You do not want deep toast here, just a little drying and structure. Lightly toasting the bread first helps prevent sogginess once the béchamel goes on. That brief toast builds just enough structural resistance into the bread to protect it through the coming stages — assembly, baking, and the thick béchamel — without pushing it toward the kind of deep crispness that would make the finished sandwich hard to cut and eat.
Assemble the Sandwiches
- Lay 4 slices of bread on the tray, toasted side down if relevant. Top each with 2 slices of ham and about 80g total Gruyère divided among the 4 sandwiches. Close with the remaining bread slices. Spoon a thin layer of béchamel over the tops, then top with the remaining Gruyère and the Parmesan if using. Reserving a portion of the Gruyère specifically for the top, rather than using it all inside the sandwich, ensures there's enough cheese remaining to actually melt into that classic, bubbling gratiné layer the finished dish depends on.
Bake Until Bubbling
- Bake at 220°C for about 8 to 10 minutes, until the cheese has melted and the sandwiches are hot through. Switch to the broiler for 1 to 2 minutes at the end if needed, until the top is bubbling and golden in spots. The top should look glossy, deeply melted, and lightly browned, while the bread edges stay crisp rather than burnt. That brief final switch to the broiler, used only once the sandwich is already hot through, builds real colour and bubbling texture on top quickly, without needing to extend the overall baking time long enough to risk drying out the interior.
Fry the Eggs
- While the sandwiches finish, heat a skillet over medium heat and add the butter. Crack in the eggs and fry gently until the whites are set and the edges are lightly crisp, about 2 to 3 minutes. Keep the yolks runny. Season lightly with salt and black pepper. For a proper croque madame, the egg should sit neatly on top and the yolk should stay soft enough to run when cut. Frying at a genuinely gentle, medium heat, rather than high heat, is what lets the white set fully through while the yolk stays soft — high heat would firm the yolk too quickly relative to the white.
Finish the Croque Madame
- Place one fried egg on top of each hot sandwich. Scatter with chopped chives or parsley and a little extra black pepper. Timing the eggs to finish right alongside the sandwiches, rather than earlier, is what keeps that yolk genuinely runny by the moment it's served — an egg fried and held while waiting for the sandwich would continue firming from residual heat.
Serve
- Serve immediately while the top is still bubbling, the sandwich is hot, and the egg yolk is runny. This dish's whole appeal depends on catching every component — bubbling cheese, hot sandwich, soft-yolked egg — at its individual best simultaneously, which is exactly why any real delay works against it.
Notes
Cooking the butter and flour together into a proper paste before any milk is added deserves genuine respect as the technique responsible for whether this béchamel turns out smooth or lumpy. That brief cooking stage coats each individual starch granule in fat, which is specifically what keeps those granules from clumping together the moment they meet hot liquid — skipping or rushing this step is one of the more common reasons a white sauce turns grainy rather than silky.
Toasting the bread only lightly, stopping well short of deep colour, reflects real understanding of what this particular sandwich needs from its base. A croque madame's bread has to survive both a thick, wet béchamel and a genuine bake — the brief initial toast builds just enough resistance for that journey without pushing the bread toward the kind of hard crispness that would make the finished sandwich difficult to cut through cleanly.
Reserving a distinct portion of the Gruyère specifically for the sandwich's top, rather than using it all as filling, deserves attention as a deliberate structural choice. That reserved cheese is what actually produces the sandwich's classic, bubbling, golden gratiné finish — without saving enough for the top, the dish would miss that defining visual and textural signature entirely.
Frying the eggs only at the very end, timed to finish alongside the baked sandwiches rather than earlier, protects the one component this dish depends on staying genuinely soft. A fried egg continues cooking from residual heat even off the pan, and an egg fried too early and left waiting would firm up considerably by the time it's finally placed on top.
