Melt butter with olive oil in a heavy-bottomed pot over medium heat for 90 seconds until foaming subsides. Add sliced onions and a pinch of salt; stir constantly for 3-4 minutes until they begin releasing moisture and softening slightly.
Reduce heat to medium-low and cook uncovered for 35-40 minutes, stirring every 5-6 minutes to prevent sticking. The onions should transform from pale yellow to deep caramel brown with concentrated sweetness—this caramelization develops the soup's signature depth.
Increase heat to medium-high and add minced garlic, dried thyme, and bay leaf; cook for 90 seconds until fragrant. Pour in both broths and balsamic vinegar, scraping the pot bottom with a wooden spoon to release all caramelized bits.
Bring to a simmer and cook uncovered for 10-12 minutes to meld flavors. Stir in heavy cream, nutmeg, salt, and pepper; taste and adjust seasoning. The classic french onion soup classic recipe achieves balance when richness and savory depth harmonize perfectly.
Toast bread slices under the broiler until golden, 2-3 minutes per side. Rub each slice with cut garlic clove immediately after toasting while still warm to maximize aromatic absorption.
Ladle soup into oven-safe bowls, top each with one garlic toast slice, then pile ½ cup shredded gruyere on top of the bread. Place bowls on a baking sheet and broil for 3-4 minutes until cheese bubbles and develops light golden spots.
Remove carefully—the bowls are extremely hot—and let rest for 2 minutes before serving. The cheese will continue melting slightly, creating the signature creamy texture.