For the onions
2 tablespoons olive oil
4 medium yellow onions, thinly sliced (about 6 cups)
3 cloves garlic, thinly sliced
2 bay leaves
1 1/2 teaspoons kosher salt
1 teaspoon fresh thyme leaves
1/2 teaspoon freshly ground black pepper
1/3 cup dry white wine, such as sauvignon blanc
2 tablespoons unsalted butter
For the meatballs
1 pound 90% lean ground beef
1 large egg, beaten
1/3 cup panko breadcrumbs
1 teaspoon kosher salt
1/2 teaspoon freshly ground black pepper
2 tablespoons olive oil
For the sauce and serving
1 tablespoon all-purpose flour
2 cups low-sodium chicken broth
1 teaspoon Dijon mustard
1 teaspoon Worcestershire sauce
6 ounces freshly grated Gruyere cheese (about 1 cup)
Toasted baguette slices, for serving
Method
Cook the onions:
In a large skillet, heat the olive oil over medium heat. Add the onions, garlic, bay leaves, and salt and cook, stirring frequently, until the onions are deeply golden (but not quite caramelized) and reduced significantly in volume, about 45 minutes. You can add a splash or two of water to the pan if it starts to become dry (this tends to happen around the 30-minute mark).
Add the thyme and black pepper and cook until the herbs are fragrant, about 1 minute. Add the white wine and butter, scraping up the bottom of the pan to loosen any dark bits. Remove and discard the bay leaves and transfer the onions to a plate to let cool slightly. Rinse and wipe out the skillet and set aside.
Make the meatball mixture:
In a large bowl, combine the ground beef, egg, panko, salt, and pepper. Once the onions are cool enough to handle, roughly chop half the onions and add them to the meatball mixture.