Ingredients
Equipment
Method
- Arrange one oven rack about 6 to 8 inches from the broiler and another rack in the middle. Heat the oven to 400°F. Line a rimmed baking sheet with parchment paper or a silicone baking mat.
- Halve and thinly slice the yellow onions. Pick enough thyme leaves to measure 2 tablespoons. Mince the garlic. Grate the Gruyère cheese and set aside.
- In a large bowl, combine the garlic, 2 teaspoons of the thyme, 1/4 cup of the Gruyère, panko breadcrumbs, milk, egg, Worcestershire sauce, 1 1/4 teaspoons of the kosher salt, and 1/4 teaspoon black pepper. Stir to mix. Add the ground beef and gently mix with your hands until just combined. Do not overmix.
- Shape into 32 to 34 meatballs, about 1 1/2 inches wide. Place them on the prepared baking sheet, spacing them slightly apart.
- Bake on the middle rack for 15 to 20 minutes, until browned and cooked through. The center should reach at least 165°F.
- While the meatballs bake, melt the butter in a large broiler safe skillet over medium heat. Add the sliced onions, 1 tablespoon of thyme, the remaining 1 1/4 teaspoons kosher salt, and remaining 1/2 teaspoon black pepper. Cook, stirring often, for 25 to 30 minutes. The onions should be very soft and deep golden brown. Lower the heat if they start to burn.
- Sprinkle the flour over the onions and stir well. Cook for about 1 minute until the flour lightly browns.
- Pour in 1/4 cup of the dry white wine. Scrape the bottom of the pan to loosen any browned bits. Let the wine cook down for about 30 seconds.
- Add the beef broth and whisk until smooth. Bring to a boil, then cook for 6 to 8 minutes until the sauce thickens enough to coat the back of a spoon. Remove from heat and stir in the balsamic or sherry vinegar. Taste and adjust salt and pepper if needed.
- Remove the meatballs from the oven and switch the oven to broil. Carefully transfer the meatballs into the skillet with the sauce. Gently stir to coat, then spread them into an even layer.
- Sprinkle the remaining Gruyère cheese over the top. Place the skillet on the upper rack and broil for 3 to 4 minutes, until the cheese is melted, bubbly, and lightly browned.
- Garnish with the remaining thyme and serve warm with crusty bread if desired.
Notes
This dish brings together deep, savory flavors with a comforting texture that feels both hearty and indulgent. It’s the kind of recipe that turns a simple dinner into something memorable.
