Melt butter in a large Dutch oven over medium-high heat. Add sliced mushrooms and cook for 8-10 minutes, stirring occasionally, until they release moisture and begin browning. This step develops the earthy foundation that distinguishes this recipe from lighter versions.
Add sliced onions to the mushrooms and reduce heat to medium. Cook for 15-18 minutes, stirring every few minutes, until onions turn golden and begin caramelizing at edges. The goal is deep color without burning—lower heat prevents scorching.
Stir in minced garlic and fresh thyme, cooking for exactly 90 seconds until fragrant. Pour in white wine and scrape up any browned bits stuck to the bottom—these concentrated flavors are liquid gold for your soup.
Add beef broth and bring to a gentle simmer. Let this creamy french onion mushroom soup bubble for 12-15 minutes so flavors meld and deepen. The simmering time allows the onion and mushroom essences to fully infuse the broth base.
Reduce heat to low and stir in heavy cream, balsamic vinegar, salt, and pepper. Cook for 3-4 minutes without boiling—boiling breaks the cream's silky texture. Taste and adjust seasoning because salt levels vary by broth brand.
Ladle soup into oven-safe bowls and top each with crusty bread rubbed with olive oil. Sprinkle shredded gruyere generously over bread, then broil for 2-3 minutes until cheese melts and browns slightly. Watch carefully to prevent burning.