Ingredients
Equipment
Method
Make and brown the meatballs
- Mix ground beef, breadcrumbs, egg, Worcestershire, garlic powder, onion powder, salt, and pepper, then roll into 1.5-inch meatballs.
- Heat butter in a cast iron skillet over medium-high heat and brown meatballs, then transfer to a plate.
Caramelize onions and build the sauce
- In the same skillet, cook thinly sliced onions in butter over medium-low heat for 30-35 minutes, stirring occasionally until deeply caramelized.
- Deglaze with white wine (or beef broth) and scrape up browned bits from the bottom of the skillet.
- Add beef broth, Worcestershire, and fresh thyme, then bring the sauce to a gentle simmer.
Simmer and broil with cheese
- Return browned meatballs to the sauce and simmer for 15 minutes until tender and coated.
- If your skillet is not oven-safe, transfer meatballs and sauce to a baking dish, then scatter Gruyère–provolone over the top.
- Broil for 3-4 minutes at high heat until the cheese is golden and bubbly.
Notes
Pro tip: caramelize the onions slowly over medium-low heat so they turn jammy and sweet rather than browned too fast. Refrigerate leftovers in a covered container for up to 3 days; reheat gently in a skillet or microwave until hot. Freezing is not recommended because the cheese layer and onion texture can change after thawing. For a lighter swap, use 90% lean ground beef to cut fat without changing the method.
