Ingredients
Equipment
Method
Make and brown the meatballs
- Mix ground beef, breadcrumbs, egg, Worcestershire, garlic powder, onion powder, and salt and pepper until evenly combined. Roll into 1.5-inch balls.
- Heat butter in a skillet over medium heat and brown meatballs on all sides. Transfer to a plate or bowl so you can sauce them next.
Caramelize the onions and simmer
- In the same skillet, cook sliced onions in butter over medium-low heat for 30-35 minutes, stirring occasionally, until deeply caramelized. The onions should look golden brown and smell sweet.
- Deglaze the skillet with dry white wine or beef broth. Scrape up browned bits from the bottom and cook for about 2 minutes.
- Stir in beef broth, Worcestershire, and fresh thyme. Bring to a gentle simmer.
- Return browned meatballs to the sauce and simmer for 15 minutes, turning once if needed. The meatballs should be cooked through and coated in the onion broth.
Broil with cheese
- Transfer to a baking dish if the skillet is not oven-safe, then scatter Gruyère or provolone over everything. Make sure the cheese covers the top evenly.
- Broil for 3-4 minutes until the cheese is golden and bubbly. Let it stand briefly before serving so the sauce thickens slightly.
Notes
Pro tip: if the onions start to stick before they caramelize, add a splash of broth or wine and keep scraping to pull up the browned bits. Refrigerate leftovers in a covered container for up to 4 days; reheat gently on the stove or in the oven until hot through. Freezing is not recommended for best cheese texture. For a lower-fat swap, use lean ground beef (90% or lower) and replace half the cheese with a part-skim version.
