Ingredients
Equipment
Method
Make and brown the meatballs
- In a mixing bowl, combine ground beef, breadcrumbs, egg, Worcestershire, garlic powder, onion powder, and salt and pepper until evenly incorporated. Roll into 1.5-inch balls and set aside as you form them.
- Heat 1 tbsp butter in a cast iron skillet over medium-high heat, then brown the meatballs on all sides. Continue until well-browned, then transfer to a plate and set aside.
Caramelize onions and build the French onion sauce
- Lower the heat to medium-low and add the remaining butter to the same skillet with the browned bits. Caramelize onions, stirring occasionally, for 30-35 minutes until deep golden and soft.
- Pour in the dry white wine or beef broth to deglaze, scraping up browned fond from the pan. Cook for 1-2 minutes until the liquid looks slightly reduced.
- Add beef broth, Worcestershire, and fresh thyme to the skillet and stir to combine. Bring to a gentle simmer, then add the meatballs back into the sauce.
Simmer and finish with melted cheese
- Simmer the meatballs in the sauce for 15 minutes, turning them once so they stay coated. The broth should look lightly thickened and the meatballs should be heated through.
- Transfer to a baking dish if your skillet isn’t oven-safe, then scatter the Gruyere or provolone over everything. Make sure the cheese covers the surface in an even layer.
- Broil for 3-4 minutes until the cheese is golden and bubbly. Pull from the oven when the top is browned with blistered spots.
Notes
Pro tip: thinly slice the onions for faster, more even caramelization—stir more often near the end to prevent scorching. Store leftovers in the refrigerator up to 3-4 days in an airtight container; reheat gently on the stovetop until hot. Freeze the meatballs and sauce (without broiling fresh cheese) up to 2 months; thaw overnight in the fridge and rewarm, then broil with cheese. For a lighter option, use 90% lean ground beef to reduce fat while keeping the savory onion broth.
