Heat butter and olive oil in a large Dutch oven over medium heat. Add sliced onions and cook uncovered for 20-25 minutes, stirring every 5 minutes until deeply golden brown and caramelized. The onions should smell sweet and look mahogany-colored, not pale or translucent.
Add minced garlic and cook for exactly 60 seconds until fragrant. Pour in white wine and scrape the bottom with a wooden spoon to release caramelized bits—this deglazing step builds flavor complexity that Marco taught us never to skip.
Add beef broth, diced potatoes, thyme, and bay leaf to the pot. Bring to a boil, then reduce heat and simmer for 12-15 minutes until potatoes are fork-tender and beginning to break down slightly.
Stir in heavy cream and adjust seasoning with salt and black pepper. For the creamy french onion potato soup recipe, taste at this stage—broth saltiness varies, so season to preference. Simmer gently for 2-3 minutes to meld flavors without boiling.
Remove the bay leaf and stir in shredded Gruyere cheese until completely melted and incorporated. Ladle into bowls and garnish with fresh parsley just before serving for color and brightness.