Ingredients
Equipment
Method
Make and brown the meatballs
- Mix ground beef, breadcrumbs, egg, Worcestershire, garlic powder, onion powder, and salt and pepper, then roll into 1.5-inch balls.
- Heat butter in a skillet over medium-high heat and brown meatballs until browned on the outside, about 3-4 minutes, then set aside.
Caramelize onions and simmer the sauce
- In the same skillet, melt butter and caramelize the thinly sliced onions over medium-low heat with occasional stirring for 30-35 minutes until deeply golden and soft, with a glossy brown look.
- Pour in the dry white wine (or beef broth) and deglaze, scraping up browned bits from the bottom for 1-2 minutes until the pan looks clean.
- Add beef broth, Worcestershire, and fresh thyme, then bring to a gentle simmer.
- Return browned meatballs to the sauce and simmer for 15 minutes until cooked through and coated, with bubbling around the edges.
Broil with a cheesy topping
- Transfer to a baking dish if your skillet is not oven-safe, spreading meatballs and onion broth evenly.
- Scatter the Gruyère/provolone over everything so it fully covers the top in an even layer.
- Broil for 3-4 minutes until the cheese is golden and bubbly with browned spots and a set, creamy surface.
Notes
For extra rich flavor, caramelize the onions until they look deep amber and jammy; if they’re browning too fast, lower the heat to keep them from turning bitter. Refrigerate leftovers in a sealed container up to 3-4 days; reheat gently in a covered pan or microwave until hot. Freezing is not recommended for best cheese texture. For a lighter option, use lean ground beef (90% or higher) to reduce calories while keeping the sauce and broiled cheese crust the same.
