Ingredients
Equipment
Method
Mix and brown the meatballs
- In a bowl, mix ground beef, breadcrumbs, egg, Worcestershire, garlic powder, and salt and pepper until combined. Roll into meatballs and set aside.
- Heat 2 tablespoons of butter in an oven-safe cast iron skillet over medium-high heat until foaming. Brown the meatballs in batches, then remove to a plate.
Caramelize the onions and build the sauce
- Lower heat to medium-low and melt the remaining 2 tablespoons of butter in the same skillet. Add sliced onions and cook 30-35 minutes, stirring occasionally, until deeply caramelized and dark golden-brown.
- Stir in minced garlic and fresh thyme during the last 1-2 minutes of onion cooking, just until fragrant. Keep the heat at medium-low to avoid scorching.
- Add the dry white wine to the skillet and deglaze, scraping up browned bits from the bottom. Cook 1-2 minutes until the wine reduces slightly.
- Pour in beef broth and Worcestershire, stirring to combine with the caramelized onions. Simmer the sauce for 2-3 minutes to meld flavors.
Simmer and broil with Gruyère
- Nestle the browned meatballs into the caramelized onion sauce so they’re partially submerged. Simmer for 10 minutes, turning once halfway if needed for even coating.
- Scatter Gruyère over the top of everything in an even layer. Broil 3-5 minutes until golden and bubbly, watching closely to prevent over-browning.
Notes
Pro tip: caramelize the onions patiently—medium-low heat and 30-35 minutes is what creates the deep, sweet-savory base. Refrigerate leftovers in a sealed container for up to 4 days; reheat gently in a skillet or microwave until hot. Freezing is not recommended because the onions and Gruyère texture can get grainy after thawing. For a lighter swap, use 93% lean ground beef (or a leaner option) to reduce fat while keeping the same method.
