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.

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
1. Make the Beef Stock


2. Prepare the Soup




3. Serve




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.

French Onion Soup Recipe

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

Notes
Nutrition
Nutrition information is automatically calculated, so should only be used as an approximation.
Like this recipe? Rate & comment below!FAQs
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.
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.
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.
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.




Amazing soup.
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
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.
Hi, can I switch the chees for something that doesn’t have milk?
Yes, you can use a plant-based cheese if needed, keeping in mind that it may not melt as well. I hope you enjoy!
This is a new favorite for my whole family!