Peel onion, cut in half, and slice into thin half-moons.
Grate gruyere cheese.
Heat a 10-inch nonstick, oven-safe skillet over medium-low, then add butter.
When butter melts, add the sliced onions and sauté. Cook until onions are lightly caramelized, about 15 minutes.
Meanwhile, whisk the eggs, cheese, dijon mustard, and cream together in a medium bowl, with ¼ teaspoon pepper.
Add the chopped ham to the egg and cheese mixture and stir, then pour into the pan with the onions. Spread the filling around so it’s evenly distributed through the eggs.
Preheat the broiler and set the oven rack a few inches underneath the heating element.
Turn up the heat under your skillet to medium high.
Cook the frittata on the stove for 5-8 minutes. The best way to do this is to slowly lift the edges of the frittata with your spatula, tip the pan, and let the uncooked egg mixture pool underneath. Do that a few times in different spots, as it cooks. Turn down the heat if it looks like your frittata is browning too quickly on the bottom.
When the bottom is totally set, and the egg mixture on top is a little more than halfway cooked, you’re ready to put it under the broiler. Note: it’s ok for the top to still look raw.
Sprinkle on the parmesan cheese.
Slide your pan onto the oven rack, and broil. Watch closely because this can happen fast: take it out when the frittata puffs up pleasingly, looks entirely cooked, and has lightly browned on top, 1-3 minutes.
Take it out, and let it rest for a few minutes. It will continue to cook in the pan as it sits.
Give it a quick hard shake and slide it out onto a cutting board. Slice and eat!
Notes
Make-Ahead: This ham and cheese frittata will last in the refrigerator for 3-4 days in an airtight container or wrapped in foil. Frittatas also freeze well, so feel free to wrap them in foil or in a freezer-safe plastic bag and freeze for up to 3 months. I like to freeze individual slices, so they are easy to take out if you need a quick breakfast or lunch one day. Expert Tip: The trickiest part of this recipe is not overcooking the eggs. Overcooked eggs become rubbery. You may need to test a frittata recipe a couple of times using your pan and stovetop, since everyone’s tools conduct heat differently. But my best advice is to put your frittata under the broiler when the top of the frittata still looks raw, but it is getting harder to pour excess egg under each side. Then broil until the top is just set and nicely browned.