
French onion soup is the ultimate comfort food—a rustic, elegant dish that transforms humble onions into liquid gold through patient caramelization and a rich beef broth base. This classic French bistro staple has graced tables for centuries, and for good reason. There’s something deeply satisfying about a steaming bowl of this soup, with its sweet, savory depth and that glorious melted cheese-topped bread floating on top.
The secret to perfect French onion soup lies in three key elements: time, patience, and quality ingredients. Unlike quick weeknight soups, this beauty demands low and slow cooking—at least 45 minutes of gentle caramelization to coax out the natural sugars from the onions. Don’t rush this step; it’s where all the magic happens. The deeper the caramelization, the more complex and delicious your final soup will be.
What makes this recipe truly special is the combination of techniques. We’ll start with a homemade beef stock for maximum flavor, though quality store-bought versions work beautifully too. The onions are slowly caramelized until they’re deep golden brown, then deglazed with wine and beef broth. A touch of thyme and bay leaves adds aromatic complexity, while the famous broiled bread and melted Gruyère cheese topping provides that restaurant-quality finish that makes everyone swoon.
I’ve made this recipe hundreds of times, and I’m thrilled to share my foolproof method with you. Whether you’re cooking for a special dinner party or simply craving something warm and wonderful on a chilly evening, this French onion soup will not disappoint. It’s the kind of dish that makes you feel like a professional chef, yet it’s surprisingly accessible to home cooks of all skill levels.
For more inspiration on classic French cooking, check out Bon Appétit’s take on French onion soup or Serious Eats’ detailed guide. You might also enjoy exploring hearty beef stew for another cozy French-inspired option. And if you want to master the art of caramelization, this New York Times guide on caramelizing onions is absolutely essential reading. Finally, don’t miss our French cooking basics guide for more classic techniques.
Ingredients
- 4 tablespoons unsalted butter
- 2 tablespoons olive oil
- 3 pounds yellow onions (about 8-10 large onions), sliced into ¼-inch rings
- 1 teaspoon kosher salt, plus more to taste
- ½ teaspoon freshly ground black pepper
- 1 teaspoon sugar (optional, helps with caramelization)
- 3 cloves garlic, minced
- 2 tablespoons all-purpose flour
- 1 cup dry white wine (such as Sauvignon Blanc)
- 8 cups beef stock or broth (preferably homemade)
- 2 bay leaves
- 3 sprigs fresh thyme (or 1 teaspoon dried thyme)
- 2 tablespoons cognac or brandy (optional but recommended)
- 1 tablespoon balsamic vinegar
- Salt and freshly ground black pepper to taste
- 6 thick slices crusty French bread or baguette
- 2 cups grated Gruyère cheese (or Swiss cheese)
- Fresh thyme sprigs for garnish (optional)

Instructions
- Prepare your ingredients by slicing the onions into even ¼-inch rings—this consistent size ensures they cook uniformly. Mince your garlic and set aside. Have your beef stock heating gently in another pot, as adding cold stock to your soup will drop the temperature and interrupt the cooking process.
- Heat the butter and olive oil together in a large, heavy-bottomed pot or Dutch oven over medium heat. Once the butter is foaming and the oil is shimmering, add all the sliced onions along with the salt and pepper.
- Cook the onions uncovered, stirring occasionally, for about 10 minutes until they begin to soften and release their moisture. At this point, they’ll look quite wet and will have reduced significantly in volume.
- Continue cooking for another 15-20 minutes, stirring more frequently (about every 5 minutes), until the onions turn a light golden color. This is where patience becomes your best friend—don’t rush this stage, as it’s crucial for developing deep flavor.
- Once the onions are golden, reduce the heat to medium-low and continue cooking for another 20-30 minutes, stirring frequently. The onions will gradually deepen in color, turning from golden to amber to a rich caramel brown. Scrape up the browned bits from the bottom of the pot with your wooden spoon; these are liquid gold flavor-wise.
- If your onions seem to be browning too quickly or sticking, add a splash of water (about 2-3 tablespoons) to prevent burning. The goal is a slow, even caramelization, not a quick scorch. The entire caramelization process should take 45 minutes to 1 hour total.
- Add the minced garlic to the caramelized onions and cook for about 1 minute, stirring constantly, until fragrant. Be careful not to burn the garlic, as this will create a bitter flavor.
- Sprinkle the flour over the onions and stir well, coating them completely. Cook for 1-2 minutes to create a light roux, which will help thicken the soup slightly and add richness.
- Pour in the white wine, scraping up all the browned bits from the bottom of the pot with a wooden spoon. This deglazing step is crucial—all those caramelized bits contain incredible flavor. Let the wine reduce by about half, which should take 3-4 minutes.
- Carefully pour in the warm beef stock, stirring to combine with the onion mixture. Add the bay leaves and thyme sprigs, and bring the mixture to a gentle simmer.
- Reduce the heat to low and let the soup simmer gently for about 15-20 minutes. This allows the flavors to meld and develop. Do not boil vigorously, as this can make the soup taste harsh.
- Stir in the cognac or brandy (if using) and the balsamic vinegar. These additions add depth and complexity—the vinegar brightens the flavors while the brandy adds warmth and richness.
- Taste the soup and season with additional salt and pepper as needed. Remember that the cheese topping will also add saltiness, so be judicious. Remove the bay leaves and thyme sprigs.
- To prepare for serving, preheat your broiler to high. Ladle the soup into individual oven-safe bowls, filling them about three-quarters full. Alternatively, you can prepare this in a large oven-safe pot or Dutch oven to serve family-style.
- Place the bread slices on a baking sheet and toast them under the broiler for 1-2 minutes per side until lightly golden and crispy. Watch carefully to prevent burning, as bread toasts quickly under direct heat.
- Place a toasted bread slice on top of each bowl of soup, pressing it down slightly so it absorbs some of the broth. Divide the grated Gruyère cheese evenly among the bowls, piling it generously on top of the bread.
- Place the soup bowls on a baking sheet (this makes handling safer and catches any drips) and transfer to the preheated broiler. Broil for 2-4 minutes, watching carefully, until the cheese is melted, bubbly, and golden brown with some charred spots.
- Remove the bowls from the broiler using oven mitts—they will be extremely hot. Allow them to cool for 1-2 minutes before serving to prevent burns from the hot cheese and broth.
- Garnish with fresh thyme sprigs if desired, and serve immediately while the cheese is still melted and the bread is warm and crispy. Provide soup spoons and small forks for guests to break up the bread.

Pro Tips
- **Make-Ahead Tips**: You can prepare the soup up to 2 days in advance by stopping after step 12. Simply cool it completely, store it in an airtight container in the refrigerator, and reheat gently on the stovetop before serving. Do not add the bread and cheese topping until just before serving and broiling.
- **Cheese Selection**: While Gruyère is traditional and highly recommended, Swiss cheese, Emmental, or even a combination of Gruyère and Parmesan work beautifully. Avoid pre-shredded cheese if possible, as it contains anti-caking agents that prevent smooth melting; always shred from a block.
- **Bread Matters**: Use thick slices of crusty French bread or baguette that can support the weight of the melted cheese without falling into the soup. Brioche or other soft breads won’t work well and may become mushy.
- **Stock Quality**: The quality of your beef stock significantly impacts the final soup. If possible, make homemade stock or use a high-quality store-bought version. Low-sodium broths are preferable as they allow you to control the salt level.
- **Onion Varieties**: Yellow onions are traditional for this recipe, but you can use a combination of yellow, red, and white onions for more complex flavors. Avoid sweet onions like Vidalia, as they caramelize too quickly and don’t develop the desired depth.
- **Wine Substitution**: If you prefer not to use wine, replace it with an additional cup of beef stock. Red wine can be substituted for white wine for a deeper, richer flavor profile, though this deviates from the traditional recipe.
- **Broiler Safety**: Keep a close eye on the broiler step—cheese burns quickly under direct heat. Every broiler is different, so adjust timing accordingly. If the cheese isn’t browning enough, move the bowls closer to the heat source briefly.
- **Serving Suggestions**: Serve French onion soup as a first course before a light main dish, or make it hearty enough for a light lunch with a simple salad. It pairs beautifully with a crisp white wine or a light red like Pinot Noir.
- **Flavor Boosters**: A splash of sherry or Madeira wine can replace or supplement the cognac. A pinch of Dijon mustard added at the end adds subtle complexity. Fresh or dried tarragon can substitute for thyme for a different flavor profile.
- **Freezing**: This soup freezes exceptionally well for up to 3 months. Freeze in individual portions without the bread and cheese topping. Thaw overnight in the refrigerator and reheat before finishing with bread and cheese.
