Soups & Stews
This 99 French onion soup recipe delivers restaurant-quality depth with a perfectly caramelized onion base and a golden, bubbling cheese crown. The secret lies in slow-cooking onions until they're deep amber and sweet—transforming simple ingredients into a flavor explosion. I've perfected this technique over years of testing, ensuring every spoonful delivers that perfect balance of savory, sweet, and umami.
The process begins with creating a rich, velvety broth by building layers of flavor through a classic roux, then simmering onions until they melt into a sweet, jam-like consistency. This foundational step takes patience, but the reward is a soup so flavorful it becomes the star of any meal. The bread gets toasted to crispy perfection before being topped with melted Gruyère and Parmesan, creating that iconic cheese crown that's both satisfying and visually stunning.
What makes this recipe truly special is how it combines traditional techniques with modern convenience—whether you're using a slow cooker for hands-off preparation or a stovetop for precise control. The result is a soup that's rich yet balanced, with tender onions swimming in a deeply flavorful broth topped with that irresistibly crispy cheese crust. Each bite delivers a perfect harmony of textures and flavors that will have everyone at the table asking for seconds.
Serve this French onion soup as a comforting starter or hearty main course, especially on chilly evenings when you crave something warm and satisfying. The aroma alone will fill your kitchen with nostalgia for Parisian bistros, while the first sip transports you straight to the heart of France. Ready to master this classic? Let's get started with the ingredients and techniques that make it shine.
Ingredients for 99 french onion soup
Six pounds of caramelized onions and rich broth create this iconic French masterpiece.
| Ingredient | Amount | Notes |
|---|---|---|
| Yellow Onions 🧅 | 6 lb | Yellow or sweet onions, thinly sliced |
| Unsalted Butter 🧈 | ¾ cup | European-style preferred for flavor |
| All-Purpose Flour 🌾 | ½ cup | For classic roux base |
| Beef Broth 🍲 | 8 cups | Homemade or high-quality store-bought |
| Dry White Wine 🍷 | ½ cup | Sauvignon Blanc recommended |
| Bouillon Cube 🧂 | 1 whole | Beef bouillon for depth |
| Fresh Thyme 🌿 | 2 sprigs | Or 1 tsp dried thyme |
| Fresh Parsley 🌿 | ¼ cup | Chopped for garnish |
| Gruyère Cheese 🧀 | 2 cups | Shredded, high-quality |
| Parmesan Cheese 🧀 | 1 cup | Freshly grated from block |
| Baguette 🍞 | 1 whole | Crusty, day-old preferred |
| Olive Oil 🫒 | 2 tbsp | For bread toasting |
| Salt 🧂 | 2 tsp | Kosher or sea salt |
| Black Pepper 🌶️ | ½ tsp | Freshly ground preferred |
| Garlic Cloves 🧄 | 3 cloves | Minced for roux |
The onions are the heart of this dish—six pounds of them, thinly sliced and slow-cooked until deep amber and sweet. Whole Foods and Trader Joe's carry the best yellow onions for this purpose, but any sweet or yellow onion will work. Look for firm, dry onions with crisp outer skins. If you're feeling adventurous, try Pearl onions for a sweeter profile, though they take longer to caramelize. The butter should be European-style—it has a higher fat content that creates a richer roux. Plugrá or Kerrygold are my go-to brands for this recipe, but any quality unsalted butter will do.
No white wine? Dry chicken broth works in a pinch, though the acidity will differ slightly. Fresh thyme is ideal, but dried thyme at one-third the amount gets you close. For the cheese crown, Gruyère is non-negotiable—it melts beautifully and has that perfect nutty flavor. If you can't find it, Comté or Emmental are decent substitutes. The baguette should be crusty and day-old—fresh bread gets soggy under the cheese. If you can't find a baguette, a sourdough loaf works well too. The beef broth can be homemade or store-bought, but avoid anything with artificial flavors—Knox or Pacific Foods** are reliable brands.
This soup tastes even better the next day, so make a double batch if you're feeding a crowd. Store the broth and onions separately in airtight containers for up to 5 days in the fridge. The cheese crown should be assembled just before serving—it stays crispy for about 10 minutes after baking. For leftovers, remove the cheese crown and store the soup separately. Reheat gently on the stove, then toast fresh bread and add a fresh cheese topping when serving. The onions can be caramelized ahead of time and stored for 3 days in the fridge, saving you time on the day of serving.
Why You'll Love This Recipe
- One-Pot Magic: I swear by this recipe for lazy nights—just caramelize onions in butter, toss in flour, and let the broth and wine do the work. No extra pans, no fuss, just pure, bubbling satisfaction.
- Wine-Infused Depth: That splash of dry white wine? It’s the secret weapon—brightens the rich beef broth and balances the caramelized onions like a pro. Honestly, it’s the kind of flavor that makes you want to linger over a bowl.
- Leftovers That Shine: The soup actually tastes better the next day. I’ll be real: I’ve reheated it three times, and the flavors meld into this cozy, hearty stew. Perfect for meal prep or feeding unexpected guests.
- Budget-Friendly Luxury: You’re getting restaurant-quality richness without the price tag—beef broth and onions stretch far, and butter and flour make it feel indulgent. It’s my go-to when I want to impress without breaking the bank.
Step-by-step instructions for French onion soup
A rich, caramelized onion base and perfectly toasted cheese crown make this classic soup unforgettable.
Caramelize the Onions Slowly
Begin by melting the 0.75 cup unsalted butter in a large Dutch oven over medium-low heat. Add the 6 lb yellow onions, sliced thinly, and stir to coat evenly. The onions should sizzle gently without browning too quickly.
Cook for 45-50 minutes, stirring occasionally, until the onions are deep golden brown and nearly translucent. This slow process develops the sweet, complex flavors that define French onion soup. If the onions start to stick, add a splash of water and stir—just enough to loosen without diluting the flavor. Real talk: Patience here makes all the difference.
Build the Roux and Deglaze
Once the onions are caramelized, sprinkle the 0.5 cup all-purpose flour over the onions and stir constantly for 2-3 minutes until the mixture turns golden brown and nutty. This creates a rich roux that thickens the soup and adds depth.
Pour in the 0.5 cup dry white wine and scrape up any browned bits from the bottom of the pot. Let it simmer for 1-2 minutes until the alcohol smell dissipates. Then add the 8 cups beef broth and dissolve the 1 whole bouillon cube in it. Stir in the 2 sprigs fresh thyme, 2 tsp salt, and 0.5 tsp black pepper. Bring to a gentle simmer and let it cook uncovered for 20 minutes to allow flavors to meld.
Prepare the Cheese Topping
While the soup simmers, shred the 2 cups gruyère cheese and 1 cup parmesan cheese together. Set aside on a plate. Cut the 1 whole baguette into 6 slices, about ½-inch thick. Brush both sides of each slice with the 2 tbsp olive oil and toast them in a 400°F oven for 5-7 minutes until golden and crisp.
Here's the thing—crispy bread is non-negotiable. If your oven runs hot, check at the 4-minute mark. The bread should hold its shape but be perfectly toasted. This is the foundation of your cheese crown, so don't rush it.
Assemble and Bake the Soup
Preheat your broiler to high. Ladle the soup into six oven-safe bowls, leaving room at the top. Place one toasted bread slice on top of each bowl, then divide the shredded cheese evenly among them. The cheese should be piled high enough to create a golden crust when broiled.
Broil for 3-5 minutes until the cheese is bubbly and golden brown in spots. Watch closely—the cheese can burn quickly. Once the top is golden and slightly browned, remove from the broiler and let rest for 1 minute before serving. This resting time allows the cheese to set slightly for easier handling.
Garnish and Serve Immediately
Transfer the bowls to plates and sprinkle each with 1 tablespoon of the chopped fresh parsley. The vibrant green contrasts beautifully with the golden cheese and caramelized onions. Serve immediately while the cheese is still bubbly and the soup is piping hot.
Each spoonful should deliver layers of sweet caramelized onions, rich broth, and crispy, melty cheese. The bread should be perfectly toasted underneath, adding a satisfying crunch with every bite. This is where all the effort comes together—don't skip the garnish, it elevates the presentation and flavor.
Pro Tips For Making 99 French Onion Soup
- Sweat Onions Low and Slow: I learned this the hard way—blasting onions on high heat turns them bitter and burns before they caramelize. Instead, keep the heat at a steady medium (about 300°F) and let them cook for 45-60 minutes, stirring occasionally. The goal is to break them down into a jammy, golden paste, not just brown them. Cover the pot for the last 10 minutes to trap steam and deepen the flavor.
- Use Cold Butter for Roux: Plopping warm butter into your onions will melt it instantly, leaving you scrambling to avoid a grease fire. Instead, let the butter sit at room temperature for 10 minutes before adding it—this gives you time to adjust heat and control the roux formation. A proper blond roux (not brown) is the foundation here; rush it, and you’ll end up with a floury taste instead of that rich, nutty depth.
- Deglaze with Wine Immediately: That splash of dry white wine isn’t just for flavor—it’s for scraping up all the golden bits stuck to the bottom of the pot. Add it right after the onions have caramelized and let it simmer for 2-3 minutes before adding the broth. Skipping this step means losing half the flavor that makes this soup sing.
- Strain the Broth Twice: Store-bought beef broth is often cloudy with bits that muddy the soup’s clarity. After simmering the wine and broth together, strain it through a fine-mesh sieve, then pour it back into the pot. For an extra-clear result, strain it again through a cheesecloth-lined sieve before ladling into bowls. Yes, it’s a pain, but the difference in texture and presentation is worth it—especially when you’re serving it under melted cheese.
Flavor customization for these flavors
Sweet and Smoky Twist
For a deeper flavor profile, add 1 tbsp smoked paprika when building the roux and a ½ cup apple cider instead of white wine. The smokiness pairs beautifully with the caramelized onions, while the cider adds subtle sweetness. Finish with a sprinkle of crumbled bacon on top for extra richness. 🔥
Herb-Infused Variations
Swap the thyme for 1 sprig rosemary and 1 sprig tarragon to create a more complex herbal profile. The rosemary adds piney notes, while tarragon brings a subtle anise-like sweetness. Garnish with fresh chopped tarragon leaves for a sophisticated touch.
Spicy Kick Option
Add a dash of Cayenne pepper or hot sauce to the broth for heat lovers. I recommend ½ tsp cayenne or 1 tbsp Frank's RedHot stirred into the simmering soup. For a smoky-spicy combo, add ½ tsp chipotle powder when building the roux. Balance with a dollop of sour cream when serving.
Vegetarian Adaptation
Replace the beef broth with 8 cups mushroom broth and add 1 cup sliced mushrooms to caramelize alongside the onions. Use vegetable bouillon instead of beef, and swap the Parmesan for nutritional yeast or vegan Parmesan. The umami from mushrooms makes this version surprisingly rich. 🌱
Cheese Crown Upgrades
Experiment with different cheese combinations for the crown. Try Fontina for extra creaminess or Gouda for a caramel-like sweetness. For a decadent twist, mix in 2 tbsp cream cheese with the shredded cheese to create a gooey, stretchy texture. Sprinkle with crispy fried shallots before broiling for added crunch.
Seasonal Fruit Pairings
In fall, add ½ cup diced apples to the caramelized onions for natural sweetness. In winter, try ½ cup pears in light syrup (drained) for a luxurious touch. For spring, a splash of lemon zest in the broth brightens the flavors. Always balance fruit additions with a pinch of salt to enhance their natural sweetness.
Nutrition facts
Frequently asked questions
Can I make this soup ahead of time?
Caramelize the onions and prepare the broth up to 3 days ahead—store them separately in airtight containers. Reheat the soup gently on the stove, then toast fresh bread and add a fresh cheese crown when serving. The onions can also be caramelized ahead and refrigerated for 3 days to save time on cooking day.
What if I don’t have Gruyère cheese?
No problem! Use Comté or Emmental for a similar nutty flavor, or swap in Fontina for extra creaminess. Avoid pre-shredded cheese—it contains anti-caking agents that prevent proper melting. Freshly grated cheese creates that perfect golden crust every time.
How do I prevent the bread from getting soggy?
Toast the bread slices until deep golden and crisp (about 5-7 minutes at 400°F) before adding cheese. For extra insurance, brush the toasted bread with a thin layer of olive oil or melted butter before broiling. The cheese crown should be assembled and broiled right before serving—never more than 10 minutes ahead.
Can I use a slow cooker for the onions?
Yes! Cook the onions on low heat for 4-5 hours with 1 tbsp butter** and a splash of water to prevent sticking. Stir occasionally to ensure even caramelization. For the roux, transfer the onions to a skillet to finish cooking on the stovetop—slow cookers can’t achieve the same depth of browning for the flour step.
Why does my cheese crown turn out rubbery?
Rubbery cheese usually means it didn’t melt properly. Ensure your cheese is freshly grated (not pre-shredded) and broil on high heat for 3-5 minutes until bubbly and golden. If your oven runs hot, watch closely to avoid burning. A mix of Gruyère and Parmesan (or Fontina) creates the best melt and texture.
