Add oil and butter to a soup pot and heat over medium-low heat. Stir in the thinly sliced onions and cook for 30-40 minutes, stirring frequently.
Once the onions are caramelized, stir in the garlic, bay leaf, and thyme. Cook for 30 seconds and then add the flour. Cook for 2-3 minutes.
Add the wine and deglaze the pot by scraping the bottom with a wooden spoon. Allow the wine to reduce by half and then add the beef broth and Worcestershire sauce.
Increase the heat to medium-high and let the soup come to a boil, once it comes to a boil, reduce the heat to medium and cook for 15 minutes. Season generously with salt and pepper.
Preheat oven to 400 degrees F. and slice baguette to 1/2 inch slices. Drizzle the baguette slices with olive oil and bake for 5 minutes.
Pour the soup into individual oven-safe bowls, and then add 1 or 2 slices of baguette to each bowl. Top it off with gruyere cheese and parmesan cheese. Broil for 1-2 minutes or until the cheese is completely melted.
If topping the soup off with French fried onions, do so after you broil the cheese.