Prep your bread: Spread a thin, even layer of butter on one side of each slice of bread.
The buttered side will face the skillet.
Heat the pan: Warm a nonstick skillet or griddle over medium heat. Give it a minute or two to get evenly hot.
Cook the egg: Add a small pat of butter to the skillet. Crack in the egg.
Season with a pinch of salt and pepper. Cook sunny-side up for a runny yolk, or flip and cook through for a firmer egg. If you prefer a folded omelet style, whisk the egg first and scramble into a neat fold.
Warm the ham: Push the egg to one side of the pan or set it on a plate.
Add the ham slices to the skillet for 30–45 seconds per side to lightly brown and warm.
Layer the sandwich: Place one slice of bread, buttered side down, in the skillet. Add a slice of cheese, the ham, the egg, and another slice of cheese. Top with the second slice of bread, buttered side up.
Grill low and slow: Cook the sandwich over medium to medium-low heat for 3–4 minutes per side.
Press gently with a spatula to promote even browning. If the bread is browning too fast before the cheese melts, lower the heat.
Check the melt: Peek underneath to ensure the bread is golden brown. Flip carefully and continue cooking until the second side is golden and the cheese is melted.
Optional extras: If using mustard or hot sauce, carefully lift the top slice of bread after cooking and spread a thin layer.
Add tomato or spinach now if desired.
Rest and slice: Transfer to a cutting board and let it rest for 1 minute so the cheese sets slightly. Slice in half and serve right away.