Ingredients
Equipment
Method
Mix and brown the meatballs
- In a bowl, mix ground beef, breadcrumbs, egg, Worcestershire, garlic powder, salt, and pepper until evenly combined, then roll into meatballs. Brown the meatballs in butter in an oven-safe skillet over medium-high heat until golden on all sides, then remove to a plate.
Caramelize the onions and build the sauce
- Reduce heat to medium-low and add the sliced onions to the same skillet. Cook for 30-35 minutes, stirring occasionally, until deeply caramelized, then stir in garlic and fresh thyme for 30 seconds to 1 minute.
- Deglaze the skillet with dry white wine, scraping up any browned bits from the bottom. Add beef broth and Worcestershire, bring to a simmer, and cook for 2 minutes.
Simmer, melt, and finish
- Nestle the browned meatballs back into the caramelized onion sauce, turning to coat. Simmer for 10 minutes at a steady simmer until the sauce thickens slightly and the meatballs are cooked through.
- Scatter Gruyere over everything in an even layer. Broil for 3-5 minutes until golden and bubbly, then rest 2 minutes before serving.
Notes
Pro tip: give the onions enough time on medium-low—deep caramelization is what makes the broth taste “slow-cooked.” Store leftovers in an airtight container in the refrigerator up to 3 days; freeze up to 2 months (best thawed overnight in the fridge and reheated gently). Dietary swap: use gluten-free breadcrumbs if needed to make the meatballs gluten-free.
