Peel and thinly slice the onions, ensuring even cuts.
In a large pot or Dutch oven, melt the butter and olive oil over medium heat. Add the sliced onions and stir to coat. Cook for about 15 minutes, stirring frequently, until the onions soften and become translucent.
Reduce heat to medium-low and continue cooking, stirring occasionally, for 30-40 minutes, or until the onions achieve a rich golden brown color. During the last few minutes of cooking, add the minced garlic, being careful not to burn it.
Increase heat to medium-high. Pour in the white wine to deglaze the pot, scraping up any browned bits from the bottom with a wooden spoon. Let the wine reduce by half, which should take approximately 5 minutes.
Add the beef stock, bay leaves, and thyme. Season with salt and pepper. Bring the mixture to a simmer, then reduce heat to low and let it gently simmer for about 30 minutes to allow the flavors to meld. Remove the bay leaves before serving.
Preheat your broiler. Arrange the baguette slices on a baking sheet. Top each slice with grated Gruyère cheese. Broil in the preheated oven for 2-3 minutes, or until the cheese is bubbly and golden brown. Watch carefully to prevent burning.
Carefully remove the cheesy baguette slices from the oven and place them into individual bowls of the hot soup. Serve immediately and enjoy your delicious homemade French Onion Soup