- 2 tablespoons unsalted butter, plus more for bread
- 2 tablespoons all-purpose flour
- 2 cups whole milk
- 1/2 cup grated Gruyere cheese, plus 8 slices
- 1/2 cup grated Parmesan cheese
- 8 thick slices rustic bread
- 12 slices ham
- Dijon mustard, for bread
Melt butter in a saucepan over medium heat. Whisk in flour. Add milk; bring to a simmer. Cook, whisking frequently, until sauce thickens, about 5 minutes. Remove from heat. Add grated cheeses. Whisk until melted and smooth.
Butter bread. Arrange half the slices, buttered side down, on a rimmed baking sheet. Top each with 2 slices Gruyere and 3 slices ham. Spread mustard onto unbuttered sides of remaining bread. Place on top of ham, buttered side up.
Preheat broiler. Heat a grill pan or skillet over medium heat. Cook each sandwich until golden brown and cheese melts, about 5 minutes per side. Return to baking sheet. Spoon 1/3 cup sauce over top of each sandwich. Broil until tops are bubbling and golden brown, about 3 minutes.