In a large pot or Dutch oven, melt 3 tablespoons of butter over medium heat. Add 4 large thinly sliced onions and cook, stirring occasionally, for about 25-30 minutes until they are golden brown and caramelized.
Stir in 2 minced garlic cloves and cook for another minute. Pour in 1/2 cup of dry white wine to deglaze the pot, scraping up any browned bits from the bottom.
Sprinkle 2 tablespoons of flour over the onions and stir to coat. Cook for 1-2 minutes to remove the raw flour taste.
Slowly add 6 cups of beef broth while stirring to prevent lumps. Mix in 1 teaspoon of Worcestershire sauce, 1 teaspoon of dried thyme (or 2-3 sprigs fresh thyme), 2 bay leaves, and season with salt and pepper to taste. Bring the soup to a simmer and let it cook for 20-25 minutes, allowing the flavors to meld.
While the soup simmers, preheat your oven broiler. Place 6-8 slices of baguette on a baking sheet and toast until golden brown.
Ladle the soup into oven-safe bowls, place a toasted baguette slice on top of each bowl, and sprinkle with shredded Gruyère or Swiss cheese (about 1/4 cup per bowl). Place the bowls under the broiler for 2-3 minutes or until the cheese is melted and bubbly.
Carefully remove the bowls from the oven and serve immediately. Enjoy your rich and cheesy homemade Longhorn French Onion Soup!