Melt the butter in a saucepan over medium heat. Once foaming, add the flour and whisk constantly for about 1 minute to create a roux—this cooks out the raw flour taste and ensures a smooth sauce. Gradually pour in the milk while whisking continuously to prevent lumps from forming. Continue whisking as the mixture simmers for 2 to 3 minutes until it thickens enough to coat the back of a spoon. Remove from heat and season with salt and pepper. I like to strain my béchamel through a fine-mesh sieve if any lumps form—it ensures silky smoothness in every bite.
Preheat your oven to 350°F. While it heats, spray a 9x13-inch baking dish (or similar 3-quart capacity) with cooking spray to prevent sticking. Have all your ingredients prepped and ready—cut the ham into appropriate pieces, grate the Gruyere cheese if not already done, and cut each biscuit into 6 pieces. This mise en place ensures you can work efficiently once assembly begins.
Pour the warm béchamel sauce from Step 1 into the prepared baking dish and spread evenly across the bottom. Scatter half of the ham pieces over the sauce, distributing them as evenly as possible. Spread half of the cut biscuit pieces in a single layer over the ham. Top this layer with the remaining ham pieces and half of the grated Gruyere cheese. Finally, arrange the remaining biscuit pieces on top, pressing down gently so they settle into the sauce and absorb the flavors. This layering technique creates pockets of texture and ensures the ham and cheese are distributed throughout.
Place the assembled baking dish in the preheated 350°F oven and bake for 20 minutes. The biscuits will begin to set and rise, and the sauce will bubble around the edges. This initial baking time allows the base to firm up before you add the eggs, which is essential so the eggs don't sink to the bottom.
Remove the baking dish from the oven carefully. Using the back of a spoon, gently press down to create 6 wells distributed evenly across the top of the biscuit mixture—space them in a 2x3 grid pattern. Scatter the remaining Gruyere cheese into and around these wells. Crack one egg into each well, being careful not to break the yolk if you prefer them runny (I crack them into a small cup first, which gives me more control and prevents shell fragments). Return the dish to the 350°F oven and bake for 10 to 15 minutes, depending on how you like your eggs—start checking at 10 minutes for runny yolks, or go the full 15 minutes for more set eggs. Season the baked eggs with a pinch of salt and pepper just before serving.