French Onion Soup, or Soupe à l’Oignon, is a timeless French classic built on patience and simple ingredients. The heart of this dish lies in slowly caramelized onions, which develop a deep, rich sweetness as they cook. These onions are simmered in a savory broth, creating a warming and flavorful soup. What makes it truly iconic is the topping of toasted bread and melted Gruyère cheese, broiled until golden and bubbly. Rustic yet elegant, this soup is comforting without being heavy. It’s a staple of French bistros and home kitchens alike. Perfect for cozy dinners or relaxed lunches, French onion soup is a dish that never goes out of style.


This classic French soup is all about slow-caramelized onions. They turn sweet, deep, and golden, then simmer in a savory broth and get topped with toasty bread + melty Gruyère for that famous bubbly crust.
Cut the onions in half, then slice them thinly. Don’t worry if they aren’t perfect—once they cook down, it all turns silky.
In a large pot or Dutch oven over medium heat, melt butter with the olive oil.
Add all the onions and sprinkle with salt. Stir well to coat.
Cook 10 minutes, stirring occasionally, until they soften and start to release liquid.
Reduce heat to medium-low. Cook onions 35–45 minutes, stirring often, until they’re deep golden brown.
If they start sticking, splash in 1–2 tbsp water and scrape up the browned bits. (Optional: add 1 tsp sugar halfway through to help browning.)
Stir in garlic and cook 30 seconds—just until fragrant.
Sprinkle in 2 tbsp flour and stir for 1 minute.
This gives the soup a slightly richer body, but you can skip it if you prefer a lighter broth.
Pour in ½ cup white wine and scrape the bottom of the pot to lift all that flavor. Simmer 2–3 minutes to reduce.
Add broth, bay leaves, and thyme. Bring to a gentle simmer.
Simmer uncovered 20–25 minutes.
Taste and adjust with a pinch more salt/pepper if needed.
While the soup simmers, toast your baguette slices until crisp.
(You want sturdy toast so it doesn’t instantly sink.)
Ladle soup into oven-safe bowls on a baking sheet.
Top each bowl with 1 slice toasted bread, then pile on Gruyère (and Parmesan if using).
Broil 2–4 minutes until bubbly and golden—watch closely!
Let cool 3–5 minutes before eating (it’s lava-hot).