Instructions
1Caramelize the Onions
Heat butter and olive oil in a large, heavy-bottomed pot or Dutch oven over medium heat. Add the sliced onions, salt, and pepper. Cook slowly, stirring occasionally, for 45-60 minutes. The onions should turn deep golden brown and become sweet and caramelized. This is the most important step—patience is key! Avoid high heat, which will brown the onions too quickly without the proper sweetness.
2Add Aromatics and Tomato
Once onions are caramelized, add the fresh thyme, bay leaves, and tomato paste. Stir well and cook for 2-3 minutes to release the flavors. The tomato paste adds depth and a slight sweetness that balances the caramelized onions beautifully.
3Deglaze with Wine
Add the balsamic vinegar and white wine, scraping up any browned bits from the bottom of the pot. The vinegar adds a subtle tang and complexity. Simmer for 2-3 minutes to reduce slightly and cook off the alcohol. This builds incredible depth of flavor.
4Add Broth and Simmer
Pour in the beef broth. Bring to a boil, then reduce heat to low and simmer for 15-20 minutes. This allows all the flavors to meld together. Season with additional salt and pepper to taste. Remove bay leaves before serving.
5Toast Bread and Assemble
While the soup simmers, slice the baguette on a diagonal and toast the slices until golden and crispy. To serve, ladle the hot soup into oven-safe bowls. Top each bowl with a slice of toasted bread, then generously cover with grated Gruyère cheese. Place the bowls on a baking sheet.
6Final Melt and Serve
Broil the soup bowls in the oven for 2-3 minutes at high heat, until the cheese is melted, bubbly, and lightly golden. Watch carefully to avoid burning. Remove carefully—the bowls will be very hot! Garnish with fresh thyme and parsley. Serve immediately while the cheese is at its most glorious and stretchy!