Slice your onions thinly and uniformly. The thinner your slices, the more quickly they'll caramelize and release their natural sweetness.
In a large, heavy-bottomed pot or Dutch oven, melt the butter with olive oil over medium heat. Add the sliced onions and salt, then stir to coat evenly.
Lower the heat to medium-low and cook uncovered, stirring occasionally, for 45-50 minutes until the onions are deeply golden and sweet.
Once onions are caramelized, add minced garlic and thyme, cooking for 2 minutes until fragrant. Add the bay leaf.
Sprinkle flour over the onions, stirring constantly for 2-3 minutes to eliminate any raw flour taste.
Pour in the wine and scrape up any browned bits from the bottom of the pot. Let the wine reduce by half (about 3-5 minutes).
Add the beef broth and Worcestershire sauce. Bring to a gentle simmer and cook uncovered for 20-30 minutes, allowing the flavors to meld together.
While the soup simmers, preheat your oven to 350°F (175°C). Place baguette slices on a baking sheet and toast in the oven until lightly golden, about 5-7 minutes. Remove and increase oven temperature to broil.
Ladle the hot soup into oven-safe bowls placed on a baking sheet. Place 1-2 toasted baguette slices on top of each soup bowl, then generously cover with grated cheese.
Broil until the cheese is bubbly and golden brown, about 3-5 minutes. Watch carefully to prevent burning.
Garnish with fresh parsley if desired and serve immediately.