Ingredients
Equipment
Method
Mix and shape the meatballs
- In a bowl, mix ground beef, breadcrumbs, egg, Worcestershire, garlic powder, salt, and pepper until just combined.
- Roll the mixture into meatballs and keep them ready for browning in the skillet.
Brown the meatballs
- Melt 2 tablespoons of butter in an oven-safe skillet over medium-high heat, then add meatballs and brown on all sides for about 3-5 minutes.
- Remove the meatballs to a plate and keep the skillet drippings in place.
Caramelize onions and build the sauce
- Lower heat to medium-low and add remaining 2 tablespoons butter, then cook onions, stirring occasionally, for 30-35 minutes until deeply caramelized.
- Add minced garlic and fresh thyme and cook for 1-2 minutes until fragrant.
- Pour in dry white wine and deglaze, scraping up browned bits from the bottom of the skillet, then let it bubble for 2 minutes.
- Stir in beef broth and Worcestershire, then bring the mixture to a gentle simmer.
Simmer, add cheese, and broil
- Nestle browned meatballs into the caramelized onion sauce, then simmer for 10 minutes, turning once so they absorb sauce.
- Scatter shredded Gruyère over the entire surface so it melts into a browned layer.
- Broil for 3-5 minutes until golden and bubbly, watching closely to prevent burning.
Notes
Pro tip: slice onions evenly and keep the heat at medium-low so they caramelize, not scorch. Store leftovers in the refrigerator up to 3 days; reheat gently on the stovetop until hot. Freezing is not recommended because Gruyère texture can change after thawing. For a lighter option, use 90% lean ground beef and reduce butter to 3 tablespoons total while still cooking onions low and slow.
