This is a straightforward French onion soup built around a long, slow caramelization and a two-stock broth — beef for depth, chicken for balance. It takes about two hours start to finish, most of which is hands-off simmering. If you have onions, some kind of stock, and a broiler-safe bowl, you can make this work.
What makes this version work
Two things actually move the needle here. First, the caramelization: 40 to 45 minutes over medium heat with a pinch of sugar and salt is not optional — pull the onions too early and the soup tastes flat and sharp instead of sweet and rich. Stir every few minutes, and if the bottom of the pot is browning faster than the onions, drop the heat rather than adding water. Second, the combination of beef and chicken stock matters more than the brand. Beef stock alone can taste one-dimensional; the chicken stock rounds it out without making it taste like chicken soup. Use whatever you have on hand, but try to keep at least half the liquid as beef.
Ingredient notes
- Onions: Yellow onions are the right call here — they have enough sugar to caramelize properly. White onions work in a pinch. Red onions will turn the broth an odd color and taste slightly off.
- White wine: Use a dry white you’d actually drink — Sauvignon Blanc or Chardonnay both work. If you’d rather skip the wine, use an extra splash of stock and a small squeeze of lemon juice at the end to add a little brightness.
- Gruyère: It melts cleanly and has a nutty flavor that pairs well with the sweet onions. Emmental is the closest swap. Provolone is milder but melts beautifully. Shredded mozzarella will get you the cheese pull but not much flavor — skip it if you can.
- Baguette: Any sturdy bread works — a thick slice of sourdough or even a day-old dinner roll will hold up fine under the broth. Skip the garnish of fresh thyme on top — not worth the extra dish.
- Worcestershire sauce: Optional in the recipe, but worth adding if you have it. A small splash of soy sauce does the same job.
If something goes sideways
- The onions are burning, not caramelizing: Your heat is too high. Add a tablespoon of water or stock to the pot, scrape up the bottom, and lower the burner. Burnt onions will make the whole soup bitter — there’s no fixing it after the fact.
- The soup tastes thin after simmering: Keep simmering uncovered for another 10 to 15 minutes. Evaporation concentrates the flavor. A small splash of Worcestershire or soy sauce can also help if the broth still tastes flat.
- The cheese isn’t browning under the broiler: Move the rack closer to the broiler element, or give it another 1 to 2 minutes. Watch it — it goes from golden to scorched quickly.
- The bread is getting soggy before you even broil: Make sure your baguette slices are fully toasted and the soup is hot when you ladle it. A thicker slice also holds up better than a thin one.
- Your bowls cracked in the oven: Not all bowls are broiler-safe even if they’re oven-safe. Use ceramic ramekins or thick stoneware bowls, and place them on a sheet pan so they heat more evenly.
Leftovers and make-ahead
The soup base (without bread or cheese) keeps well in the fridge for up to 4 days in a sealed container, and it freezes for up to 3 months — freeze it in individual portions so reheating is easy. Reheat on the stovetop over medium-low until hot, then assemble the bread and cheese fresh each time; pre-assembled bowls do not store well. If you want to get ahead on a weeknight, caramelize the onions up to 3 days in advance and refrigerate them — they reheat in the pot in just a few minutes before you add the stock.
Classic French Onion Soup
Equipment
- Large heavy-bottomed pot or Dutch oven
- Wooden spoon
- Oven-safe bowls
- Sheet pan
- Chef knife
- Cutting board
Ingredients
- 3 pounds yellow onions peeled and thinly sliced
- 2 tablespoons unsalted butter preferably European-style for richer flavor
- 1 tablespoon olive oil extra virgin
- 1 teaspoon granulated sugar to aid in caramelization
- 1 teaspoon kosher salt
- 4 cups beef stock high-quality, homemade or low-sodium store-bought
- 2 cups chicken stock adds depth and complexity
- ½ cup dry white wine such as Sauvignon Blanc or Chardonnay
- 2 teaspoons fresh thyme leaves or 1 teaspoon dried thyme
- 1 teaspoon Worcestershire sauce optional but enhances umami
- 1 piece bay leaf
- 1 whole French baguette sliced 1/2-inch thick
- 2 cups Gruyère cheese freshly shredded
Instructions
- In a large heavy-bottomed pot or Dutch oven over medium heat, add butter and olive oil. Once the butter has melted, stir in the sliced onions, salt, and sugar. Stir well to coat.
- Cook the onions uncovered for about 40–45 minutes, stirring every few minutes. They should reduce significantly in volume and become deeply golden, soft, and sweetly aromatic. If they begin to brown too quickly, lower the heat slightly.
- Once the onions are caramelized, deglaze the pot with white wine, scraping up any fond at the bottom. Cook for 2–3 minutes until the alcohol evaporates.
- Add beef stock, chicken stock, Worcestershire sauce, thyme, and bay leaf. Bring the soup to a simmer and reduce heat to low. Simmer uncovered for 40–45 minutes to develop depth of flavor. Remove bay leaf before serving.
- While the soup simmers, preheat your oven to 400°F (200°C). Arrange baguette slices on a sheet pan and toast for 10 minutes until golden and crisp, flipping halfway.
- Ladle hot soup into oven-safe bowls placed on a sheet pan. Place two toasted baguette slices on top of each bowl. Generously sprinkle shredded Gruyère over the bread and top of the soup.
- Place the sheet pan in the oven or under a broiler set to high. Broil for 3–5 minutes, or until cheese is melted, bubbly, and golden brown. Watch closely to avoid burning.
- Carefully remove bowls and let sit for 2 minutes before serving. The cheese will be molten hot.
Notes
- Time Saver: You can caramelize the onions a day ahead and refrigerate. Reheat before proceeding with deglazing and adding the stocks.
- Dietary Adaptation: For a vegetarian version, substitute beef and chicken stock with roasted vegetable broth and skip Worcestershire sauce.
- Cheese Options: Can’t find Gruyère? Swiss Emmental or sharp provolone are good alternatives. Avoid pre-shredded cheese as it contains anti-caking agents that hinder melting.
Nutrition
Your questions, answered
Can I use all beef stock instead of a mix of beef and chicken?
Yes, you can use all beef stock and the soup will still taste good. The chicken stock adds a subtle roundness, so if you go all-beef, look for a low-sodium version — full-sodium beef stock can make the finished soup quite salty after it reduces.
Do I really need oven-safe bowls, or can I just melt the cheese another way?
You don’t need special bowls if you don’t have them. Melt the Gruyère on the toasted baguette slices under the broiler on a sheet pan first, then lay the cheesy bread on top of the soup in a regular bowl — you get the same result without the risk of cracking a bowl.
My onions have been cooking for 30 minutes and they still look pale — is something wrong?
Nothing is wrong, they just need more time. Onions release a lot of water before they start to color, and the timeline depends on how thick your slices are and how hot your stove runs. Keep going and resist the urge to crank up the heat.
Can I make this without any wine?
Yes. Skip the wine and deglaze the pan with a quarter cup of stock instead, then add a small squeeze of lemon juice or a splash of apple cider vinegar to the finished soup for a bit of acidity. The flavor will be slightly less complex but still very good.
Can I use pre-shredded cheese from a bag?
You can, but freshly shredded Gruyère melts much more smoothly. Bagged shredded cheese is coated with anti-caking agents that can make it clump or turn grainy under the broiler. If a bag is all you have, it will still work — just watch it closely.


















































