3 pounds yellow onions – halved and thinly sliced pole-to-pole
6 tablespoons unsalted butter
1.5 teaspoons kosher salt
1 tablespoon all-purpose flour
0.5 cup dry white wine
8 cups beef stock
4 sprigs fresh thyme sprigs
1 leaf bay leaf
0.5 teaspoon black pepper – freshly ground
1 loaf baguette – cut into 12–18 slices, 0.5-inch thick
12 ounces gruyère cheese – coarsely grated
Instructions
Peel, halve, and slice the onions pole-to-pole into thin slices, about 1/4 inch, 10 minutes.
Melt the butter in a large heavy pot over medium-low heat until foaming, 1–2 minutes. Add the sliced onions and 1 teaspoon of the kosher salt, toss to coat, cover, and cook to wilt, 10 minutes.
Uncover and cook the onions, stirring every few minutes and adjusting heat to maintain a gentle sizzle, until deeply caramelized and mahogany brown, 35–45 minutes; scrape up any browned bits so they don't scorch.
Sprinkle in the flour and cook, stirring constantly, until the flour loses its raw smell, 1–2 minutes.
Add the white wine, bring to a simmer, and scrape the pot to dissolve the fond. Reduce the wine by about half, 3–5 minutes.
Stir in the beef stock, thyme sprigs, bay leaf, the remaining 0.5 teaspoon kosher salt, and the black pepper. Bring to a simmer, then reduce heat and cook partially covered to meld flavors, 30–40 minutes.
While the soup simmers, heat the oven to 375°F. Arrange the baguette slices on a baking sheet and toast, flipping once, until dry and lightly golden, 8–12 minutes; set aside.
Remove and discard the thyme sprigs and bay leaf. Taste the soup and adjust seasoning with additional salt and pepper if needed, 1–2 minutes.
Heat the broiler and position a rack 6 inches from the element. Ladle the hot soup into 6 broiler-safe bowls set on a rimmed baking sheet, top each with 2–3 toasted baguette slices, and divide the grated Gruyère evenly over the toasts, 2–3 minutes.
Broil until the cheese is fully melted, bubbling, and browned in spots, 3–5 minutes. Let stand 2 minutes before serving.