French Onion Soup
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
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?

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.

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!

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.

Tools For This Recipe
(Amazon affiliate links*)- Check out all of my kitchen essentials here.
- 4 ½ quart Dutch Oven: This is the one I use when I make this recipe, it’s a perfect size to hold all of the onions at the beginning and conducts heat really well.
- Mandoline Slicer: Slices and dices those onions quickly and even. (Use with caution, they’re sharp.)
- Titanium Cutting Boards & Chefs Knife
- Box Cheese Grater: Be sure to shred and grate your cheese by hand, it will melt and taste much better than pre-shredded/grated.
- Garlic Twister: Make it easy to mince cloves of garlic, fresh garlic (vs. jarred) is best in this recipe.
- Wide Soup Ladle: This is what I use to serve this up!
- French Onion Soup Bowls. These Stoneware Bistro Bowls more closely resemble the ones in my photos. Check to ensure they’re safe for broiling prior to using.
- Soup Storage Containers– These are my go-to for the fridge and freezer!
- Kitchen Basics Original Beef Stock & Better Than Bouillon Roasted Beef Base-These are what I use for broth and bouillon in this soup. (Unless I can get my hands on broth from the butcher!)
*As an Amazon Associate, I earn from qualifying purchases.
Try These Next
- Swedish Meatballs
- Chicken Broccoli Rice Casserole
- BEST Clam Chowder
- Beef Tips and Gravy
- Stuffing Meatloaf
- Lazy Lasagna
Get My Free E-Book!
- I’ve got a FREE e-Book with 7 super popular dinner recipes! Click here to join my email list and I’ll send your e-Book right over!
- And be sure to follow me on Instagram, Pinterest, & Facebook!
Tried This Recipe?
Leave a review, I love hearing your feedback! ⭐⭐⭐⭐⭐

French Onion Soup
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
- 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.
Get my Cookbooks! 









Very good!! Needed this on a cold chilly night. Easy to follow recipe. Will definitely make again. Thanks for the recipe 💕
You’re very welcome Joanne!! Perfect cozy choice for a chilly night. Thanks so much for taking the time to leave a review!!💖
Is it best to do stove top or is the crockpot method as delicious? We have a soup contest at work and I’m leaning towards this soup. Do you need beef added in like brisket or chuck, or is it as good as is?
Hi Wendy! The Stovetop is my personal preference! French Onion Soup doesn’t typically have beef, I would make it as outlined! Enjoy, good luck with the soup contest, that sounds like SO much fun!
Could I make this the day before then keep it in the fridge and re-heat in the crock pot 2 days later? Thank you in advance!:)
Hi Charmine! You definitely can, and it’ll be even more delicious as the flavors will have all that extra time to meld together! 🙂 Enjoy!
Thank you so much for your quick reply I appreciate it!
This was one of my uncles favorite dishes so I’m going to make it for his wake.
Awww I’m so sorry to hear about your uncle. 🩷 This is definitely a wonderful, delicious, homey dish to make for it. 🩷
So worth the time!! AMAZING recipe. This will be a staple in winter and possibly all year. Thank you so much for sharing.
I’m SOOO happy that you loved it! I really wanted to make this today myself, but I didn’t have enough onions and I went with Tomato Soup instead! Thank you so much for taking the time to leave a review Carla! 🙂