Caramelize the onions: Melt butter and olive oil in a large pot over medium heat. Add onions and sugar, and cook for 30-40 minutes, stirring occasionally, until deeply caramelized.
Deglaze with wine: Add white wine to the pot and scrape up any browned bits from the bottom. Cook for 5 minutes until the wine has mostly evaporated.
Add broth and bay leaf: Pour in beef broth and add bay leaf. Bring to a boil, then reduce heat and simmer for 30 minutes.
Make croutons: Preheat oven to 180°C. Brush baguette slices with olive oil and bake for 5-7 minutes, or until golden brown.
Assemble and broil: Ladle soup into oven-safe bowls. Top with croutons and grated Gruyère cheese. Broil for 2-3 minutes, or until cheese is melted and bubbly.