In a large pot or Dutch oven, melt the butter and olive oil over medium heat.
Add the sliced onions, salt, and sugar. Stir well to coat the onions.
Cook the onions, stirring occasionally, for about 30-35 minutes, until they are caramelized and golden brown.
Add the minced garlic and cook for another 1-2 minutes until fragrant.
Pour in the white wine and stir, allowing it to simmer for about 5 minutes to cook off some of the alcohol.
Add the beef broth, dried thyme, and bay leaf. Bring the mixture to a simmer and let it cook for 20 minutes to allow the flavors to meld. Season with freshly ground black pepper to taste.
While the soup simmers, preheat your oven to 350°F (175°C) and arrange the slices of baguette on a baking sheet. Toast them in the oven for about 10 minutes, turning halfway through.
Ladle the hot soup into oven-safe bowls, place one or two toasted baguette slices on top of each bowl, and generously sprinkle with Gruyère cheese.
Place the bowls on the baking sheet and broil in the oven for about 5 minutes, or until the cheese is bubbly and browned. Watch closely to prevent burning.
Carefully remove from the oven and let cool slightly before serving. Enjoy your delicious French Onion Soup!