Melt butter in a medium saucepan over medium heat. Whisk in flour and cook, stirring constantly, for about 3 minutes. Gradually add milk, stirring well until the mixture is smooth. Cook, stirring, until sauce is thickened.
Season with a little bit of salt and pepper. Remove from heat and whisk in mustard and nutmeg. Set aside while you make the sandwiches, or make the sauce up to 1 week in advance.
Preheat oven to 425° F. Line a baking tray with parchement paper and set aside.
Spread each bread slice with a layer of béchamel, spreading it all the way to the edges. Place 4 slices of bread, béchamel side up, on prepared baking sheet.
Top each with a piece of ham, a handful of gruyere, and a sprinkle of parmesan cheese. Place remaining slices of bread on top, béchamel side up, then top with remaining gruyere and parmesan cheese.
Bake at 425 degrees F for about 5-6 minutes, until cheese is melted, and then turn the oven to broil and broil until the cheese on top is lightly golden, 2-4 minutes.
Cheese: Emmental cheese is often used for croque monsieur, but I found that hard to find, and I do know Gruyere is commonly used as well, so either will work.Béchamel: Save on prep time by making the white sauce ahead of time. Make it as instructed, allow it to cool, place plastic wrap directly onto surface, then cover and refrigerate for up to 1 week.Croque Madame: To make this into a Croque Madame sandwich, make the recipe as instructed, then fry eggs (one for each sandwich, sunny-side up) in a separate skillet while the sandwiches toast in the oven. Place an egg on top each sandwiches.