Ingredients
Equipment
Method
Make and brown the meatballs
- Preheat the oven to 400°F while you mix the meatballs ingredients until just combined and roll into bite-size balls. Brown the meatballs in butter in an oven-safe skillet, turning as needed, until golden on the outside; remove to a plate.
Caramelize the onions and build the sauce
- Cook the onions in the same skillet over medium-low heat for 30-35 minutes, stirring occasionally, until deeply caramelized and jammy. Add the garlic and fresh thyme for the final 1-2 minutes until fragrant.
- Pour in the white wine and scrape up the browned bits from the skillet. Stir in the beef broth and Worcestershire until the mixture looks smooth and simmer-ready.
Simmer and melt the Gruyère
- Nestle the browned meatballs into the caramelized onion sauce and simmer for 10 minutes until heated through. Keep the sauce gently bubbling so the onions stay silky.
- Scatter the shredded Gruyère evenly over the top and broil for 3-5 minutes until golden and bubbly. Serve straight from the skillet while the cheese is at its stretchiest.
Notes
Pro tip: slice onions thinly and cook over medium-low heat without rushing—slow caramelization is what gives the sauce its deep, savory flavor. Store leftovers in an airtight container in the refrigerator up to 3 days; reheat gently in a skillet or microwave. Freezing is not recommended because the onions and cheese can change texture. For a lower-dairy option, use a Gruyère-style melting cheese or a plant-based melter, keeping the broil time the same.
