Prep the onions: Peel and slice onions pole-to-pole into thin half-moons.
Aim for even slices so they cook uniformly.
Start caramelizing: In a large heavy pot or Dutch oven, heat butter and olive oil over medium heat. Add the onions and a good pinch of salt. Cook, stirring every few minutes, until they soften and release moisture, about 10–15 minutes.
Go low and slow: Reduce heat to medium-low.
Keep cooking, stirring occasionally, scraping any browned bits off the bottom. If the pot looks dry or onions threaten to scorch, add a splash of water. Caramelization will take 35–45 minutes.
You want deep golden-brown onions with a jammy texture.
Add aromatics: Stir in garlic and thyme. Cook 1–2 minutes until fragrant. Add the bay leaf.
Deglaze: Pour in white wine (if using).
Scrape the pot to release browned bits. Let it reduce by about half, 2–3 minutes.
Build the broth: Add stock and Worcestershire. Bring to a gentle simmer.
Taste and adjust salt and pepper. Simmer 10–15 minutes to meld flavors.
Add chicken: Stir in shredded chicken. Simmer another 5–10 minutes so it warms through and the soup tastes cohesive.
Toast the bread: While the soup simmers, toast baguette slices under the broiler or in a toaster until crisp and golden.
This prevents sogginess later.
Cheese topping: Set oven to broil. Ladle soup into oven-safe bowls placed on a sheet pan. Top each bowl with 1–2 toasted slices of bread and a generous mound of grated Gruyère.
Broil: Broil 2–4 minutes, watching closely, until cheese is melted, bubbling, and lightly browned.
Let rest 2 minutes before serving.
Finish: Remove bay leaf and thyme stems. For brightness, add a small splash of sherry or apple cider vinegar. Garnish with parsley if you like.