How to Make the Perfect French Onion Soup
French · Medium · 90 min · 4 servings

A rich and deeply savory soup built on a foundation of slowly caramelized onions simmered in beef broth and finished with crusty bread and melted Gruyere cheese. This classic French bistro dish rewards patience with layers of sweet, umami-packed flavor in every spoonful.
Why this recipe works
This French Onion Soup recipe has been crafted to deliver restaurant-quality results in your home kitchen. At just 90 minutes from start to finish, it fits perfectly into a busy schedule without sacrificing flavor. Each serving comes in at 420 calories with 18g of protein, making it a balanced choice for any meal.
What you will need
This recipe uses 8 simple ingredients that you can find at any grocery store:
- 4 large yellow onions, thinly sliced
- 4 tbsp unsalted butter
- 1 cup dry white wine
- 6 cups beef broth
- 2 tsp fresh thyme leaves
- 8 slices baguette, cut 1 inch thick
- 2 cups Gruyere cheese, shredded
- 1 tsp salt and black pepper
Step by step instructions
Step 1: Caramelize the Onions
Melt butter in a large heavy-bottomed pot over medium heat. Add all the sliced onions and a pinch of salt, stirring to coat. Cook low and slow for 45 to 55 minutes, stirring every 5 to 8 minutes, until the onions are deep golden brown and very soft. Do not rush this step as proper caramelization builds the entire flavor base of the soup.
Step 2: Deglaze and Build the Broth
Increase heat to medium-high and pour in the white wine. Scrape up any browned bits stuck to the bottom of the pot. Let the wine reduce by half, about 3 minutes, then add the beef broth and fresh thyme. Bring to a gentle boil, then reduce heat and simmer for 15 minutes to meld the flavors together.
Step 3: Season the Soup
Taste the soup and adjust seasoning with salt and black pepper as needed. The broth should be rich, savory, and slightly sweet from the onions. Remove the thyme sprigs if using whole sprigs and keep the soup warm on low heat while you prepare the cheese toasts.
Step 4: Toast the Baguette Slices
Place baguette slices on a baking sheet and broil for 2 to 3 minutes per side until golden and crisp. This toasting step is important because it prevents the bread from becoming completely soggy when placed on top of the soup. Remove from oven and set aside.
Step 5: Assemble and Broil
Ladle the hot soup into oven-safe crocks or bowls placed on a baking sheet. Float two toasted baguette slices on top of each bowl and cover generously with shredded Gruyere cheese. Place under the broiler for 3 to 5 minutes until the cheese is melted, bubbly, and spotted with golden brown patches. Serve immediately and warn guests that the bowls are extremely hot.
Easy substitutions
Missing an ingredient? Here are some swaps that work perfectly:
- Gruyere cheese → Swiss cheese or Emmental for a milder but equally melty topping
- dry white wine → additional beef broth with a splash of apple cider vinegar to add acidity
- beef broth → vegetable broth with a tablespoon of soy sauce for a vegetarian version with depth
Common mistakes to avoid
Watch out for these pitfalls that can affect your results:
- Rushing the caramelization process by using high heat, which burns the onions instead of developing deep sweetness
- Using pre-shredded cheese which contains anti-caking agents that prevent proper melting and browning under the broiler
- Skipping the toasting step for the baguette, resulting in bread that completely dissolves into the soup before it reaches the table
Nutrition facts
Per serving: 420 calories, 18g protein, 38g carbs, 22g fat, 3g fiber.
Ready to cook?
Get the interactive recipe with adjustable servings, built-in timers, and ingredient checklist.
View full recipe →