Melt the butter in a large pot over medium heat. Add the onions, garlic, bay leaves, thyme, and salt and pepper and cook until the onions are very soft and caramelized, about 25 minutes.
Add the wine, bring to a boil, reduce the heat and simmer until the wine has evaporated and the onions are dry, about 5 minutes. Discard the bay leaves and thyme sprigs.
Dust the onions with flour and give them a stir. Turn the heat down to medium low so the flour doesn't burn, and cook for 10 minutes to cook out the raw flour taste.
Next, add the beef broth, bring the soup back to a simmer, and cook for 10 minutes. Season, to taste, with salt and pepper.
Once the soup is done, preheat the broiler. Arrange the baguette slices on a baking sheet in a single layer. Top the toasts with the Gruyère and broil until bubbly and golden brown, 3 to 5 minutes.
Ladle the soup in bowls and float the Gruyère toasts on top.
Notes
Make sure you have soup bowls, ramekins, or mini crocks that are oven safe. That way you can do the best part of this recipe - broiling the cheese on top!