Learn how to make a classic French onion soup recipe with deeply caramelized onions, rich beef stock, and a golden, bubbly cheese topping. I’ll walk you through my tried-and-true techniques to achieve a timeless comfort food with ease. 

Save this recipe!
Get this sent to your inbox, plus new recipes from us every week!
A bowl of classic French onion soup on a wooden cutting board with a spoon.

French onion soup traces its roots back to France, where onions and bread were inexpensive, widely available staples. Versions of onion soup date back to ancient times, but the dish as we know it today became popular in 18th-century Paris, when slow-cooked onions were paired with beef broth and topped with bread and melted cheese.

One of those timeless dishes that never gets old, this classic French onion soup recipe is so good it might make you cry! Most homemade variations fall flat because the onions aren’t caramelized long enough, and the savory broth never fully develops. 

However, my recipe focuses on slow, controlled caramelization and a deeply flavorful beef stock for restaurant-quality flavor every time. Finished with garlicky toasted bread and a properly broiled cheese topping, it’s a family favorite that rewards patience and delivers bold, balanced flavor in every spoonful, leaving you coming back for just one more bite. 

Ingredients and Notes

See the recipe card below for the complete ingredient list and instructions.

  • Homemade Beef Stock – Technically, you can use store-bought beef broth or stock. However, because there are so few ingredients, I prefer to make my own and really infuse it with rich, savory flavor by combining beef marrow bones, onions, carrots, celery, garlic, bay leaves, and fresh herbs. 
  • Butter – Unsalted butter is used throughout the recipe to caramelize the onions and add rich flavor to the soup. 
  • Onions – For a classic French onion soup recipe, I use a combination of Vidalia onions (also known as yellow onions or sweet onions), white onions, and shallots. The Vidalia onions add sweetness, the white onions add sharpness, and the shallots add depth and complexity for a well-rounded taste. 
  • Brown Sugar – Trust me on this! It amplifies the sweetness of the caramelized onions. 
  • Dry White Wine – I prefer Sauvignon Blanc or Pinot Grigio. The acidity adds brightness that cuts through some of the heaviness of the fats and promotes the caramelization process when cooking the onions. 
  • Dry Sherry – This deepens the flavor of the broth. 
  • French Baguette – Slice the baguette into pieces and use it to top the soup, kind of like croutons.  
  • Cheese – Once again, I use a combination of cheeses for the best taste and texture. Gruyère cheese creates a delicious nutty flavor, Comté cheese adds depth, and fontina cheese creates a beautiful melty consistency and gooey stretch. 

How to Make French Onion Soup

Beef stock ingredients simmering in a stock pot on the stovetop.
1. Boil and simmer. Combine all the ingredients in a large stockpot, cover with a lid, and bring the liquid to a boil. Reduce the heat, and let the liquid simmer until the marrow releases from the bones. 
Nick DiGiovanni straining fat from the top of a pot of simmering beef stock.
2. Strain. Skim the fat from the top of the broth frequently. Then, strain, discard the solids, and set the stock aside. 
Nick DiGiovanni adding butter to a Dutch oven.
3. Soften the onions. Add the butter, onions, shallots, and a generous pinch of salt to a Dutch oven. Cover, and let the butter melt and the onions soften. 
Nick DiGiovanni lifting a scoop of caramelized onions from a Dutch oven.
4. Caramelize. Remove the lid, stir in the brown sugar, and cook, stirring frequently, until the onions are deep golden brown and have a jammy consistency. 
Nick DiGiovanni pouring white wine into a Dutch oven full of caramelized onions.
5. Cook. Add the wine, and scrape up any browned bits from the bottom of the pot. Once most of the wine is evaporated, add the bay leaves, thyme, and stock, and cook until the mixture thickens. 
French onion soup in a Dutch oven topped with salt, pepper, and fresh herbs.
6. Season. Remove the pot from the heat, whisk in the remaining butter, and season to taste. 
Nick DiGiovanni placing baguette pieces on a baking sheet lined with a wire rack.
7. Toast the bread. Rub the sliced bread pieces with garlic, and bake until the surface is dry on both sides. 
Nick DiGiovanni pouring sherry into bowls for French onion soup.
8. Layer. Pour a tiny bit of sherry into soup bowls, add the soup, and top each bowl with toasted bread. Add a generous amount of cheese, and finish with a sprig of fresh thyme. 
Nick DiGiovanni holding a baking sheet with four bowls of broiled French onion soup.
9. Broil. Place the soup bowls on a baking sheet, and place them under the broiler, letting them broil to achieve a melty cheese topping that is golden brown and bubbly. 
Nick DiGiovanni lifting a spoonful of French onion soup from a bowl creating a cheese pull.
10. Serve. Let the soup cool for a few minutes, and enjoy it warm! 

Nick’s Tips for Success

  • Don’t rush the caramelization process. The onions should be deeply browned, jammy, and almost paste-like before moving on. If they’re pale or merely soft, the soup will lack depth.
  • Keep the heat low and steady. Rush the process, and the onions will burn instead of caramelize. Medium-low heat and patience produce a sweet flavor without any bitterness.
  • Deglaze early and often. If brown bits form on the bottom of the pot, add a splash of beef stock, and scrape them up. This prevents scorching and builds flavor. Don’t forget to scrape off the sides of the pot, too!
  • Toast the bread gently. The bread should be dry on the surface but still slightly soft inside so it absorbs the broth without falling apart.
  • Grate the cheese. For the best taste and texture, buy blocks of cheese and grate them the long way to create large strands. Pre-shredded cheeses contain anti-caking agents that prevent them from melting and impact their taste. 
Nick DiGiovanni lifting a spoonful of soup from a bowl of French onion soup, creating a cheese pull.
5 from 4 votes

French Onion Soup Recipe

This classic French onion soup recipe is the only way I’ll make this timeless dish. Slowly caramelized onions build deep, savory sweetness, while rich beef stock, a splash of wine, and a broiled cheese topping create the bold, balanced flavor that homemade versions often miss. Finished with garlicky toasted bread and bubbling melted cheese, this French onion soup is warm, comforting, and worth the patience it requires to make.
Servings: 4 servings
A bowl of classic French onion soup on a wooden cutting board with a spoon.
Prep Time: 30 minutes
Cook Time: 2 hours
Total Time: 2 hours 30 minutes
Save this recipe!
Get this sent to your inbox, plus new recipes from us every week!

Equipment

  • 1 Large Stockpot
  • 1 Fine Mesh Strainer
  • 1 Dutch Oven or Heavy-Bottomed Pot
  • 1 Wooden Spoon
  • 1 Sharp Chef's Knife
  • 1 Cutting Board
  • 1 Ladle
  • 1 Baking Sheet
  • 1 Wire Rack
  • 4 Oven-Safe Soup Crocks or Bowls
  • 1 Cheese Grater or Microplane

Ingredients 

For the Beef Stock*

  • 3-3 1/2 pound (1.3-1.5 kilogram) beef marrow bones
  • 2 yellow onion, quartered
  • 3 medium carrot, quartered
  • 3 celery rib, quartered
  • 1 head garlic, halved crosswise
  • 2 bay leaves
  • 4 sprig thyme
  • 4 sprig sage

For the Soup

  • 5 tablespoon (71 gram) butter, divided
  • 2 (~1 pound / 450 gram) large, Vidalia onion, thinly sliced
  • 2 (~1 pound / 450 gram) large, white onion, thinly sliced
  • 2 (~6 ounce / 170 gram) large, shallot, thinly sliced
  • 1 teaspoon (4 gram) brown sugar
  • 1 cup (236 milliliter) dry white wine
  • 2 bay leaves
  • 10 sprig thyme
  • 6 cup (1.4 liter) beef stock
  • 1 teaspoon (5 gram) kosher salt
  • 1 teaspoon (2 gram) black pepper
  • 2 teaspoon (10 milliliter) sherry

For Serving

  • 1 clove garlic, halved
  • ¼ cup (27-33 gram) Gruyère cheese
  • ¼ cup (27-33 gram) Comté cheese
  • ¼ cup (27-33 gram) fontina cheese
  • 1 French baguette, sliced 3/4-inch (~2 centimeter) thick
  • 4 sprig thyme

Instructions 

For the Beef Stock

  • In a large stockpot, add all of the ingredients for the beef stock. Submerge the ingredients in cold water. Cover and bring to a boil. Crack the lid slightly, and then reduce to a simmer.
    3-3 1/2 pound beef marrow bones, 2 yellow onion, 3 medium carrot, 3 celery rib, 1 head garlic, 2 bay leaves, 4 sprig thyme, 4 sprig sage
  • Every 30 minutes or so, skim fat and impurities off the top. Simmer and skim for four to six hours, or until the marrow is released from the bones.
  • Strain the stock, discard the solids, and set aside.

For the Soup

  • In a Dutch oven over medium-low heat, add three tablespoons of butter, onions, shallots, and a generous pinch of salt. Cover and let the butter melt, cooking until the onions begin to soften, about 15 minutes.
    5 tablespoon butter, 2 large, 2 large, 2 large
  • Remove the lid, add the brown sugar, and cook the onion mixture, stirring often, until the onions are a deep brown and jammy in consistency, 45 minutes to one hour. Reduce the heat if the onions begin to brown too quickly, and deglaze with one tablespoon of beef stock to encourage browning. Repeat deglazing as needed.
    1 teaspoon brown sugar
  • Once the onions are deeply browned, add the white wine and scrape up any browned bits on the bottom of the pot. Cook until about 80 percent of the wine has evaporated, then add the bay leaves, thyme, and reserved beef stock. Cook for 30-45 minutes, or until the stock has slightly thickened and the flavors have married. Remove from the heat, and whisk in the remaining butter. Adjust seasoning with salt and pepper to taste.
    1 cup dry white wine, 2 bay leaves, 10 sprig thyme, 1 teaspoon kosher salt, 1 teaspoon black pepper, 6 cup beef stock

For Serving

  • Preheat the oven to 275°F (135°C). Slice the garlic clove in half. Mix the cheeses in a small bowl.
    1 clove garlic, ¼ cup Gruyère cheese, ¼ cup Comté cheese, ¼ cup fontina cheese
  • Add the sliced bread to a sheet tray fitted with a rack. Rub each piece of bread with the exposed side of the garlic clove. Bake for five minutes. Then, flip and repeat on the other side. The bread should have very little color on it, but feel dry on the surface and a bit soft on the inside.
    1 French baguette
  • Remove the bread from the oven, then adjust the oven rack to the top third. Preheat the oven to broil.
  • Add four heat-safe soup crocks to a sheet tray. Pour half a teaspoon of sherry into the bottom of each bowl. Divide the soup into the bowls, then top with one to two slices of toasted bread, a small handful of cheese, and a sprig of thyme.
    2 teaspoon sherry, 4 sprig thyme
  • Transfer the soup to the oven and broil for three to four minutes, or until the cheese is golden brown and bubbly.
  • Remove from the oven, and let it cool for a few minutes before serving.

Video

YouTube video

Notes

*Adjust the ingredient amounts in the recipe instructions accordingly if doubling or tripling the recipe. Also, note that the first step under the “For the Soup” section uses three tablespoons of butter. The remaining two tablespoons are used at the end. 
*Homemade stock dramatically improves the depth of flavor, but high-quality store-bought stock can be substituted if needed.
Storage: Store cooled soup in an airtight container (without bread or cheese) in the fridge for up to four days. Or, freeze for up to three months. Thaw frozen soup in the fridge overnight, and reheat on the stovetop over medium-low heat, adding a splash of beef stock or water as needed to thin it back out. Add bread and cheese, and broil just before serving. 

Nutrition

Serving: 1serving, Calories: 552kcal, Carbohydrates: 52g, Protein: 22g, Fat: 24g, Saturated Fat: 14g, Polyunsaturated Fat: 2g, Monounsaturated Fat: 7g, Trans Fat: 1g, Cholesterol: 65mg, Sodium: 1994mg, Potassium: 1050mg, Fiber: 4g, Sugar: 15g, Vitamin A: 871IU, Vitamin C: 15mg, Calcium: 375mg, Iron: 5mg

Nutrition information is automatically calculated, so should only be used as an approximation.

iconLike this recipe? Rate & comment below!

FAQs

How do I keep the bread in my French onion soup from being soggy? 

Lightly drying the bread in the oven before broiling is key to preventing it from becoming soggy. The goal is to create bread that’s dry on the surface but still slightly soft inside. This allows it to absorb the broth without disintegrating. Using thick slices and broiling the soup just until the cheese melts also helps prevent sogginess.

How do I fix watery French onion soup? 

Watery French onion soup usually means the onions weren’t caramelized long enough or the broth wasn’t reduced properly. Let the soup simmer uncovered to concentrate the flavors, and make sure the onions are deeply browned before adding the stock. 

What should I serve with homemade French onion soup? 

If serving my French onion soup as a main course, I typically pair it with light options like a side salad or roasted vegetables. Or, if I’m enjoying it as an appetizer or side dish, I pair my soup with protein-rich entrees, like my rotisserie-style oven-roasted chicken or reverse-seared steak

Can I make traditional French onion soup without alcohol? 

It may not be exactly traditional, but you can definitely omit the alcohol. Simply skip the wine and sherry, and use a splash of beef stock or a small amount of apple cider vinegar or balsamic vinegar to help balance the richness and lift the flavors.

icon

Nick DiGiovanni

Celebrity Chef & Content Creator

You May Also Like

5 from 4 votes

Leave a comment

Your email address will not be published. Required fields are marked *

Recipe Rating




6 Comments

  1. Tad Martin says:

    5 stars
    Amazing soup.

  2. Ian says:

    5 stars
    Great recipe but I was wondering how much beef stock I would have to buy to match the amount of beef stock that we make because I would rather not make my own beef stock every time

    1. Team Nick says:

      I’m so glad you enjoyed the recipe! You’ll need 6 cups (1.4 liters) of good-quality beef stock if buying it instead of making it. Look for a low-sodium or unsalted stock so you can control the seasoning, and if you want to get closer to the richness of homemade, choose a gelatin-rich stock or add a small splash of water and let it simmer a bit longer to concentrate the flavor.

  3. Raphael says:

    5 stars
    Hi, can I switch the chees for something that doesn’t have milk?

    1. Team Nick says:

      Yes, you can use a plant-based cheese if needed, keeping in mind that it may not melt as well. I hope you enjoy!

  4. Shyanne says:

    5 stars
    This is a new favorite for my whole family!