Ingredients
Equipment
Method
Mix and form meatballs
- In a mixing bowl, combine ground beef, breadcrumbs, egg, Worcestershire, garlic powder, onion powder, salt, and pepper until just combined. Roll into 1.5-inch balls and set aside on a plate.
Brown the meatballs
- Heat 1 tablespoon of butter in a cast iron skillet over medium-high heat. Brown the meatballs until deeply browned on all sides, then transfer to a plate and set aside.
Caramelize the onions
- Add the remaining butter to the same skillet and reduce to medium-low. Cook the thinly sliced onions, stirring, until caramelized, about 30–35 minutes, turning the onions dark golden and jammy.
Build the French onion sauce
- Pour in the wine (or beef broth) to deglaze, scraping up the browned bits. Simmer briefly, then add beef broth, Worcestershire, and fresh thyme until the sauce tastes savory and fragrant.
Simmer meatballs in the sauce
- Return the browned meatballs to the onion sauce and bring to a gentle simmer. Simmer for 15 minutes, until the meatballs are cooked through and the sauce thickens slightly.
Melt the cheese and broil
- Transfer to a baking dish if your skillet isn’t oven-safe, then scatter shredded Gruyère or provolone over everything in an even layer. Broil 3–4 minutes until the cheese is golden and bubbly, with browned blistered edges.
Notes
Pro tip: keep the onion heat at medium-low so the onions caramelize slowly and don’t scorch; if the pan looks dry, add a splash of broth. Refrigerate leftovers in a sealed container up to 4 days. Freeze meatballs (with sauce, without broiling the cheese) up to 2 months; thaw overnight and reheat, then broil with cheese. For a lighter swap, use lean ground beef or ground turkey while keeping the same Worcestershire and onion sauce for flavor.
