This French Onion Soup recipe has a rich, savory broth with deeply caramelized onions, white wine, and fresh thyme. It’s topped with crisp baguette and plenty of Gruyère and Parmesan, then broiled until melted, bubbly, and golden brown. This is the ultimate cozy, restaurant-quality soup!

French Onion Soup in a crock with melted cheese and bread on top and a spoon scooping up the broth.

French Onion Soup

I honestly don’t think it gets much better than a hot bowl of French Onion Soup with a layer of bubbly, golden cheese on top! This recipe is SO incredibly flavorful, and the broth alone is enough to make you want to go back for another bowl!

The key is to take the time to really caramelize those onions until they’re deep golden brown. From there, we build even more flavor with white wine, fresh thyme, a touch of Dijon and Worcestershire sauce, and a combination of beef and chicken broth. (Using a really good beef broth makes such a difference here!)

And of course, we can’t forget the best part. 😁 Buttery toasted baguettes are topped with plenty of Gruyère and Parmesan and broiled until it’s hot, melted, and bubbly.

This is truly restaurant-quality soup! I can’t WAIT for you to try it. Be sure to check out my PRO TIPS below!

How to Make It

Note: This is an overview. See recipe card below this post for ingredient quantities and full instructions.

Slice the onions into ¼-inch slices. Toss with butter, olive oil, and a little salt. Cover and reduce over medium heat for 20 minutes. Uncover and continue to reduce, stirring occassionally.

Want to save this recipe?

I'll email it to you for later!

Sliced onions in a Dutch oven before and after they've started to soften and reduce.

Continue reducing and caramelizing the onions. Add splashes of wine toward the end to “clean” any brown spots from the bottom and sides of the pot. Add garlic, thyme, bay leaves, and the remaining wine. Add flour.

A pot of onions that have started to caramelize next to a pot of onions that are fully caramelized.

Add beef broth, chicken broth, bouillon, Worcestershire sauce, and Dijon mustard. Cover partially and simmer for 30 minutes. Ladle into serving bowls and top with toasted baguette slices. Top with gruyere and parmesan. Broil until melted and bubbly. Serve!

A soup pot of caramelized onions and broth being added next to a soup pot of French onion soup.

Pro Tips

  • If you don’t have oven-safe soup bowls: Toast the baguette slices as outlined in the recipe. Arrange the toasted slices on a baking sheet and top generously with the Gruyère and Parmesan cheese. Broil until the cheese is melted, bubbly, and browned in spots, about 2–4 minutes. Ladle the hot soup into serving bowls and carefully place the cheesy baguette slices on top. Serve immediately.
  • Beef Broth/Stock: High-quality beef broth or stock makes a big difference in this recipe since it provides much of the soup’s flavor. If you have access to a local butcher or specialty market that sells a good house-made beef stock, that’s a great option. Otherwise, Kitchen Basics Original Beef Stock is my preferred grocery store brand. Better Than Bouillon Roasted Beef Base is also added to further enhance the depth of flavor.
  • Onions: It will seem like there are a lot of onions. They’ll fill the whole soup pot! But trust the process, onions are mostly made of water, and they’ll reduce down significantly. 
    Wine: Sauvignon Blanc is my top choice for this recipe as its crisp acidity helps balance the sweetness of the caramelized onions. Pinot Grigio and a dry, unoaked Chardonnay are also great options. Avoid sweet or noticeably fruity wines.
  • Wine Substitute: You can substitute 2 tablespoons white wine vinegar + chicken broth to make 1 cup. This provides acidity and depth of flavor similar to the wine without making the soup taste vinegary.
  • Best Bread for French Onion Soup: A French baguette is my top choice for this soup. It has a sturdy, chewy texture that holds up well once topped with cheese and added to the broth. French bread, sourdough, or ciabatta are also great options. Avoid very soft sandwich-style breads, which can become soggy too quickly. Toasting the bread first is key for helping it maintain its structure.
  • Cheese: Gruyère is my top choice for French Onion Soup—it has a rich, nutty flavor and melts beautifully. Comté, Emmental, Swiss, or Fontina are also great options. I like to combine Gruyère with a little Parmesan for extra flavor and browning. For the best flavor and melt, shred the cheese from a block rather than using pre-shredded cheese.

Storage

  • Refrigerate: Store leftover soup in an airtight container and refrigerate for up to 3–4 days. For best results, store the toasted bread and cheese separately and assemble just before serving.
  • Freeze: The soup freezes very well without the bread and cheese. Store in an airtight container for up to 3 months. Thaw overnight in the refrigerator before reheating.
  • Reheat: Reheat the soup gently on the stovetop or in the microwave. Prepare fresh toasted baguette slices with cheese and add them just before serving.
  • Make Ahead: The soup can be prepared 1–2 days ahead of time, and the flavor gets even better as it sits! Refrigerate the soup and prepare the bread and cheesy topping when ready to serve.

Overhead view of French Onion Soup in a crock with a spoon on the side and bread with melted cheese on top.

Tools For This Recipe

(Amazon affiliate links*)- Check out all of my kitchen essentials here.

*As an Amazon Associate, I earn from qualifying purchases.

Try These Next

Get My Free E-Book! 

Tried This Recipe?

Leave a review, I love hearing your feedback! ⭐⭐⭐⭐⭐

A crock of French Onion Soup with melted cheese and bread on top and a spoon scooping up some of the rich broth on the side.

French Onion Soup

This French Onion Soup has deeply caramelized onions in a rich, savory broth with white wine, fresh thyme, and a hint of Dijon. It’s topped with toasted baguette and plenty of melted Gruyère and Parmesan cheese!

Ingredients

Soup

  • 3 lbs. yellow onions, about 6 medium onions
  • 1 lb. Vidalia onions, about 2 large onions
  • 1 tablespoon olive oil
  • 5 tablespoons butter
  • ½ teaspoon salt
  • 2 cloves garlic, minced
  • 3-4 sprigs fresh thyme, or ¾ tsp dried
  • 2 bay leaves
  • 1 cup dry white wine, see notes
  • 2 tablespoons flour
  • 5 cups beef broth, see notes
  • 1 cup chicken broth
  • 1 teaspoon Better Than Bouillon Roasted Beef Base, or 1 beef bouillon cube
  • 2 teaspoons Worcestershire sauce
  • 1 teaspoon Dijon mustard

Topping

  • 1 French baguette, see notes
  • 2 tablespoons olive oil
  • 1 tablespoon butter
  • 8 oz. Gruyere cheese, freshly shredded
  • ½ cup Parmesan cheese, freshly grated

Instructions

  • Slice the onions into ¼-inch slices (no thinner). Heat the olive oil and butter in a large Dutch oven or soup pot over medium heat. Add the onions, sprinkle with salt, and toss to coat. Cover and cook for 20 minutes, stirring occasionally, until they begin to soften and release their liquid.
  • Remove the cover and continue to cook the onions for up to 90 minutes, stirring every few minutes. As they become more caramelized, stir more frequently and scrape up any browned bits from the bottom of the pot. Reduce the heat as needed to prevent burning.
  • Toward the end of caramelizing, if browned bits begin to build up on the bottom of the pot, add small splashes of the wine (using up to ½ cup) and use a silicone spatula to "clean" the pot. Allow the wine to evaporate before adding another splash. This incorporates the flavorful fond back into the onions while preventing it from burning. The onions are ready when they're very soft, significantly reduced in volume, and a deep golden brown. Don't rush this step—the caramelized onions provide the primary flavor base for the soup.
  • Add the garlic and cook for 1 minute. Add the thyme and bay leaves.
  • Add the remaining wine and use a silicone spatula to scrape up any remaining browned bits from the bottom and sides of the pot. Let it simmer for 3–5 minutes, until the wine has reduced slightly and the alcohol smell has cooked off.
  • Sprinkle the flour over the onions and stir continuously for 2 minutes to cook off the raw flour taste.
  • Gradually add the beef broth and chicken broth, stirring as you do so. Add the bouillon, Worcestershire sauce, and Dijon. Bring the soup to a gentle boil, then reduce to a simmer.
  • Cover partially and simmer for 30 minutes, stirring occasionally. Remove the thyme stems and bay leaves. Taste and season with salt and pepper as needed.
  • Meanwhile, preheat the oven to 400° F. Cut the baguette into ¾-inch slices and arrange on a light-colored baking sheet. Lightly brush both sides with olive oil and butter. Bake for 6–8 minutes, flipping halfway through, until lightly golden and crisp. Remove and set aside.
  • Set the oven to broil and arrange oven-safe soup crocks on a baking sheet. (See notes if not using oven-safe bowls.) Ladle the hot soup into the crocks, leaving about ½ inch of space at the top.
  • Place 1–2 toasted baguette slices into each bowl. Combine the Gruyère and Parmesan and generously sprinkle it over the bread, extending some of the cheese to the edges of the crocks.
  • Transfer the baking sheet to the oven and broil until the cheese is completely melted and bubbly, about 2–4 minutes. Watch it closely, as broiling times vary.
  • Carefully remove from the oven and let the soup cool for a few minutes before serving. The crocks and soup will be extremely hot. Enjoy!

Notes

Pro Tips:
  • If you don't have oven-safe soup bowls: Toast the baguette slices as outlined in the recipe. Arrange the toasted slices on a baking sheet and top generously with the Gruyère and Parmesan cheese. Broil until the cheese is melted, bubbly, and browned in spots, about 2–4 minutes. Ladle the hot soup into serving bowls and carefully place the cheesy baguette slices on top. Serve immediately.
  • Beef Broth/Stock: High-quality beef broth or stock makes a big difference in this recipe since it provides much of the soup’s flavor. If you have access to a local butcher or specialty market that sells a good house-made beef stock, that’s a great option. Otherwise, Kitchen Basics Original Beef Stock is my preferred grocery store brand. Better Than Bouillon Roasted Beef Base is also added to further enhance the depth of flavor.
  • Onions: It will seem like there are a lot of onions. They’ll fill the whole soup pot! But trust the process, onions are mostly made of water, and they’ll reduce down significantly. 
    Wine: Sauvignon Blanc is my top choice for this recipe as its crisp acidity helps balance the sweetness of the caramelized onions. Pinot Grigio and a dry, unoaked Chardonnay are also great options. Avoid sweet or noticeably fruity wines.
  • Wine Substitute: You can substitute 2 tablespoons white wine vinegar + chicken broth to make 1 cup. This provides acidity and depth of flavor similar to the wine without making the soup taste vinegary.
  • Best Bread for French Onion Soup: A French baguette is my top choice for this soup. It has a sturdy, chewy texture that holds up well once topped with cheese and added to the broth. French bread, sourdough, or ciabatta are also great options. Avoid very soft sandwich-style breads, which can become soggy too quickly. Toasting the bread first is key for helping it maintain its structure.
  • Cheese: Gruyère is my top choice for French Onion Soup—it has a rich, nutty flavor and melts beautifully. Comté, Emmental, Swiss, or Fontina are also great options. I like to combine Gruyère with a little Parmesan for extra flavor and browning. For the best flavor and melt, shred the cheese from a block rather than using pre-shredded cheese.

Storage:
  • Refrigerate: Store leftover soup in an airtight container and refrigerate for up to 3–4 days. For best results, store the toasted bread and cheese separately and assemble just before serving.
  • Freeze: The soup freezes very well without the bread and cheese. Store in an airtight container for up to 3 months. Thaw overnight in the refrigerator before reheating.
  • Reheat: Reheat the soup gently on the stovetop or in the microwave. Prepare fresh toasted baguette slices with cheese and add them just before serving.
  • Make Ahead: The soup can be prepared 1–2 days ahead of time, and the flavor gets even better as it sits! Refrigerate the soup and prepare the bread and cheesy topping when ready to serve.

Nutritional information estimate and is per serving. This recipe makes 6 servings, or roughly 8 cups of soup.

Nutrition

Calories: 639kcal, Carbohydrates: 52g, Protein: 24g, Fat: 35g, Saturated Fat: 17g, Polyunsaturated Fat: 3g, Monounsaturated Fat: 13g, Trans Fat: 0.5g, Cholesterol: 80mg, Sodium: 1887mg, Potassium: 693mg, Fiber: 6g, Sugar: 16g, Vitamin A: 814IU, Vitamin C: 22mg, Calcium: 594mg, Iron: 3mg
Did you try this recipe?Mention @TheCozyCook on Instagram or tag #thecozycook!