Melt the butter in a large stockpot or Dutch oven over medium heat. Add onions and stir often, until deep golden brown and caramelized, about 30-40 minutes. If your onions begin to burn, lower the heat. slightly and add in a 1/4 cup of water. Stir in garlic until fragrant, about 1 minute.
Stir in wine, scraping any browned bits from the bottom of the stockpot.
Add in beef stock, thyme sprigs, and bay leaves. Bring to a boil; reduce heat and simmer, stirring occasionally, until slightly reduced, about 15-20 minutes. Remove and discard thyme sprigs and bay leaves.
Stir in white wine vinegar; season with salt and pepper, to taste.
Preheat your oven to broil.
Place baguette slices onto a baking sheet. Place into oven and broil until golden brown on both sides, about 1-2 minutes per side; set aside.
Divide soup into ramekins or ovenproof bowls. Place onto a baking sheet. Top with baguette slices to cover the surface of the soup completely; sprinkle with cheeses. Place into oven and broil until golden brown and cheeses have melted; about 2 minutes. Serve immediately.