Melt the butter and olive oil in a large pot over medium heat.
Add the sliced onions, salt, and sugar. Stir to coat the onions evenly.
Cook the onions, stirring frequently, until they become soft and caramelized (about 30-40 minutes).
Deglaze the pot with white wine, scraping up any brown bits from the bottom.
Add beef broth, bay leaf, and thyme to the pot. Bring to a simmer.
Simmer for 20-30 minutes, allowing the flavors to meld.
Preheat the oven to broil and prepare your bread.
Ladle soup into oven-safe bowls, place a slice of bread on top of each, and sprinkle generously with Gruyère cheese.
Broil for 3-5 minutes until the cheese is melted and bubbly.