Soups & Stews
This best onion soup recipe from scratch transforms humble onions into a symphony of caramelized sweetness and rich, velvety broth—just like your favorite Parisian bistro.
The secret lies in patience: slow-cooking onions until they melt into golden, jam-like perfection, then simmering them in a deep red wine broth until every bite feels luxurious. What starts as simple ingredients becomes a restaurant-worthy dish with layers of umami and depth you won’t find in instant versions.
We’ll build this soup the traditional way—sautéing onions for 45 minutes until they’re tender and deeply caramelized, then deglazing with white wine and beef broth for a flavorful base.
The real magic happens when we top it with a cloud of melted Gruyère cheese, crispy croutons, and fresh parsley, creating that iconic French bistro finish. Every spoonful delivers that perfect balance of sweet, savory, and creamy textures.
The result is a soup that’s foolproof yet impressive, with a rich, aromatic broth that coats your spoon and a cheese topping so golden and bubbly it looks (and tastes) like it belongs in a Michelin-starred restaurant.
This recipe delivers on the promise of comfort food—warm, satisfying, and packed with flavor—without requiring advanced techniques. Even better, it reheats beautifully, making it perfect for meal prep or leftovers.
Whether you’re cooking for a cozy weeknight dinner or impressing guests, this onion soup recipe delivers the depth and richness of a classic French dish. The slow caramelization develops complex flavors, while the Gruyère topping adds a creamy, indulgent finish that makes it impossible to resist.
Let’s get started on creating your best onion soup yet.
Ingredients for best onion soup recipe from scratch
Transform humble onions into golden caramelized perfection with these 14 ingredients—simple yet luxurious.
| Ingredient | Amount | Notes |
|---|---|---|
| Yellow Onions 🧅 | 4 large | Peeled, sliced 1/4-inch thick |
| Unsalted Butter 🧈 | ¾ cup | European-style preferred |
| All-Purpose Flour 🌾 | ¼ cup | For roux, Diamond Crystal preferred |
| Dry White Wine 🍷 | 1 ½ cups | Sauvignon Blanc or Chardonnay |
| Beef Broth 🥫 | 4 cups | Homemade or high-quality store-bought |
| Gruyère Cheese 🧀 | 2 cups | Freshly grated, aged variety |
| Fresh Thyme 🌿 | ¼ cup | Leaves only, stems removed |
| Fresh Parsley 🌿 | ¼ cup | Chopped, for garnish |
| Baguette 🍞 | 1 whole | Crusts removed, cubed |
| Olive Oil 🫒 | 2 tbsp | For croutons, extra-virgin |
| Salt 🧂 | 1 ½ tsp | Kosher or sea salt |
| Black Pepper 🌶️ | ½ tsp | Freshly ground preferred |
| Garlic Cloves 🧄 | 4 cloves | Minced, for croutons |
| Bay Leaves 🌿 | 2 whole | For broth depth |
The onions are the star—yellow onions have the perfect balance of sweetness and bite. Grab a 4-pound bag from Trader Joe's for consistency, or hit the farmers market for the freshest. European-style unsalted butter melts more smoothly, but any good butter works. For the flour, Diamond Crystal absorbs more liquid than regular brands, so stick with it if you can. The Gruyère? Freshly grated from a wedge makes all the difference—pre-shredded gets clumpy and lacks that creamy melt. Don't skip the aged variety either; it's got that nutty depth that takes this soup from good to restaurant-quality.
No white wine? Chicken broth with a splash of apple cider vinegar works in a pinch, though the acidity won't be identical. Fresh thyme is ideal, but dried at half the amount gets you close. The croutons can be store-bought, but homemade with olive oil and garlic tastes infinitely better. For the beef broth, homemade is best, but if you're using store-bought, look for brands with no added MSG. The bay leaves add subtle earthiness—remove them before serving so they don't turn bitter. And that flour? If you don't have Diamond Crystal, add 1/8 tsp extra baking soda to compensate for its lower leavening power.
This soup tastes even better the next day—reheat gently on low with a splash of broth to restore creaminess. The croutons stay crispy for 2 days if stored separately, but they're best made fresh. Gruyère keeps for 3 months in the freezer, so buy extra. For meal prep, assemble the soup without the cheese topping, then add it fresh when serving. The caramelized onions? They'll keep for 5 days in the fridge, but the magic happens when they're fresh—so make a double batch if you can!
Why You'll Love This Recipe
- No Chopping Chaos: I swear by this recipe because you only need to slice onions—no dicing, no mincing, no stress. Toss those yellow onions in butter, let them caramelize until they’re golden and sweet, and suddenly you’re halfway to heaven.
- Wine-Infused Magic: That splash of dry white wine? It’s the secret weapon. It deglazes the pan, lifts the flavor, and turns a simple beef broth into something rich and layered. Trust me, skipping it means missing out on the soul of the dish.
- Crowd-Pleaser Flex: This soup works for game nights, sick days, or when your in-laws drop by unannounced. The roux base makes it hearty enough for a main, but the wine and broth keep it light—everyone will ask for seconds, and you’ll have enough to share.
- Budget-Friendly Leftovers: Onions are cheap, flour is cheap, broth is cheap—this recipe stretches your dollar without sacrificing taste. Plus, the leftovers reheat like a dream, so you’re basically getting two meals for the price of one. My wallet thanks me every time.
Step-by-step instructions for caramelized onion soup
Here's how to transform simple ingredients into a restaurant-worthy masterpiece.
Create the Perfect Caramelized Onion Base
Melt the 0.75 cup unsalted butter in a large Dutch oven over medium-low heat. Add the 4 large yellow onions and cook them slowly, stirring occasionally, for 45-50 minutes. The onions should transform from pale to deep golden brown, with a rich, sweet aroma filling your kitchen.
This is where patience pays off—don't rush it. You're looking for onions that are completely soft and caramelized, almost jam-like in texture. If they start to stick, add a splash of water and stir until it evaporates. I like to press down gently with a wooden spoon to help them break down more quickly. The longer you cook them, the deeper the flavor becomes.
Build the Roux and Deglaze
Once the onions are perfectly caramelized, sprinkle in the 0.25 cup all-purpose flour and stir vigorously for 2-3 minutes until it forms a smooth, nutty-colored roux. This will thicken your soup beautifully and add that classic French texture.
Pour in the 1.5 cups dry white wine and scrape up all those delicious browned bits from the bottom of the pot. Let it simmer for 3-4 minutes until the wine has mostly evaporated and you're left with a glossy, flavorful liquid. The alcohol will cook off, leaving behind just the rich wine essence that makes this soup so special.
Simmer the Broth and Season
Add the 4 cups beef broth, 1.5 tsp salt, 0.5 tsp black pepper, and 2 whole bay leaves to the pot. Bring everything to a gentle simmer and let it cook uncovered for 20-25 minutes. You want the liquid to reduce slightly, intensifying all those onion flavors.
Stir in the 0.25 cup fresh thyme about halfway through cooking. This is the moment that matters: the thyme should infuse the broth with its earthy aroma, creating a complex flavor profile that elevates this simple soup from ordinary to extraordinary. Taste and adjust seasoning if needed—this is your chance to perfect the balance before adding the cheese.
Prepare the Gruyère Croutons
While the soup simmers, preheat your oven to 375°F. In a small bowl, toss the 1 whole baguette (cubed) with 2 tbsp olive oil, 4 cloves minced garlic, and a pinch of salt. Spread them on a baking sheet and toast for 10-12 minutes until golden and crisp.
Remove the croutons from the oven and immediately sprinkle them with 2 cups freshly grated Gruyère cheese. Return them to the oven for 2-3 minutes just until the cheese begins to melt and bubble. This creates those perfect, gooey cheese clouds that make this soup so irresistible. The cheese should be melted but still hold its shape when you lift a crouton.
Assemble and Serve
Ladle the hot onion soup into oven-safe bowls, being generous with each serving. Top immediately with the Gruyère croutons and any additional melted cheese from the baking sheet. The contrast between the rich, caramelized onions and the crispy, cheesy croutons is what makes this soup truly special.
Garnish with the 0.25 cup chopped fresh parsley just before serving. The bright green color provides a beautiful contrast to the golden soup and adds a fresh, herbal note that balances all the rich flavors. Serve immediately while the cheese is still bubbly and the croutons are crispy—this soup doesn't wait!
Pro Tips For Making Best Onion Soup Recipe From Scratch
- SWEAT THE ONIONS FIRST: I learned this the hard way—skipping the initial sweat leads to bitter, uneven cooking. Start with a heavy-bottomed pot on medium heat, cut onions into even ¼-inch slices, and let them cook uncovered for 10 minutes without stirring. The edges should soften and release moisture before you even think about adding butter.
- USE COLD BUTTER, NOT MELTED: Dump cold unsalted butter into the pot after the onions sweat, then stir on medium-low. The butter will slowly melt and create a silky roux instead of burning or separating. (Yes, even if you're impatient like me—this isn't the step to rush.)
- DEGLAZE WITH WINE IMMEDIATELY: As soon as the flour-butter mixture turns golden (about 2-3 minutes), pour in the white wine without waiting. The alcohol will sizzle and lift stuck-on bits, creating a richer base. Let it reduce by half before adding broth—this builds deeper flavor than just dumping everything in at once.
- SKIP THE BROTH BOIL: After adding beef broth, simmer just below a full boil—gentle bubbles, not violent ones. I used to crank the heat, but this makes the onions mushy and dulls the wine's brightness. A steady 180°F (low-medium) keeps everything tender and balanced. (Your future self will thank you.)
Wine and beer pairings for this recipe
White Wine Essentials
For this onion soup, you need a dry white wine with enough acidity to cut through the richness. I recommend Sauvignon Blanc from New Zealand or Chardonnay from Burgundy—both provide bright citrus notes that complement the caramelized onions beautifully.
If you must substitute, use dry Riesling or even apple cider vinegar (though the flavor won’t be identical). 🍷
Avoid sweet wines like Moscato or off-dry Riesling—they’ll clash with the savory depth of the soup. If you’re using a Chardonnay, opt for an unoaked version to keep the flavors crisp and clean.
The wine should be chilled but not ice-cold when added to the onions, so it integrates smoothly into the roux.
Beef Broth Pairings
A homemade beef broth with deep, umami-rich flavors elevates this soup, but if you’re using store-bought, look for brands like Kettle & Fire or Imagine—they’re free of artificial additives and packed with real beef flavor.
The broth should be reduced slightly during cooking to concentrate its richness, so don’t skimp on quality here. 🥫
For a vegetarian version, swap the beef broth for a mushroom or lentil broth with added beef bouillon for depth. The key is ensuring the broth has enough salt and umami to balance the sweetness of the caramelized onions.
A splash of soy sauce (just 1 tsp) can also help bridge the gap if needed.
Red Wine Alternatives
If you’re open to experimenting, a light red wine like Pinot Noir can add a different dimension to the soup. Use it 1:1 in place of white wine, but reduce the cooking time to 2 minutes to prevent bitterness from developing.
The earthy notes of Pinot Noir pair surprisingly well with the caramelized onions, especially if you garnish with fresh rosemary instead of thyme. 🍇
For a bold twist, try Cabernet Sauvignon—its tannins need balancing, so add 1 tsp brown sugar to the roux to soften them. This works best in winter months when you want a heartier, more robust flavor profile.
Just be mindful of the alcohol content; red wine has more, so let it simmer longer to cook off the harshness.
Beer Pairings for Bold Flavors
A crisp Belgian witbier like Hoegaarden or Stella Artois complements the soup’s richness with its citrusy, spicy notes. The effervescence also cleanses your palate between bites, making it a refreshing match.
For a dark beer lover, a German Dunkel adds a malty sweetness that echoes the caramelized onions. 🍺
Avoid heavy stouts or IPAs—they’ll overpower the delicate balance of the soup. Instead, opt for light lagers or wheat beers with low bitterness.
If you’re serving this as a winter dish, a spiced ale with cinnamon or clove can add warmth, but keep the beer’s alcohol content in mind—it should enhance, not dominate.
Non-Alcoholic Options
For a mocktail pairing, mix sparkling apple cider with a splash of lemon juice and a pinch of cinnamon. The acidity and fizz mimic the wine’s brightness, while the cinnamon adds a cozy touch. Serve it chilled in a coupe glass for an elegant presentation. 🍎
Another great option is ginger beer—its spicy kick contrasts beautifully with the soup’s creaminess. Add a dash of honey to sweeten it slightly, and garnish with a lemon wheel. This works especially well if your soup has a slightly spicy edge from black pepper or garlic croutons.
Nutrition facts
Frequently asked questions
Why do the onions need to cook for so long?
The 45-minute caramelization transforms onions from mild to intensely sweet and jam-like through the Maillard reaction. This process develops complex flavors that turn a simple onion into the soul of your soup. Skipping this step means missing out on that restaurant-quality depth.
Can I make this soup in a slow cooker?
Yes! Sauté the onions in a skillet first, then transfer them to your slow cooker with the wine, broth, and seasonings. Cook on low for 4-5 hours instead of simmering. The slow cooker won't caramelize as deeply, but it still creates a rich, flavorful broth. Add fresh croutons and cheese when serving.
What if I don't have Gruyère cheese?
Use Emmental or Comté for a similar melt and nutty flavor. Avoid pre-shredded cheese—it contains anti-caking agents that prevent proper melting. If you're dairy-free, try nutritional yeast or vegan mozzarella for a cheesy texture, though the flavor won't be identical.
How do I fix soup that's too thin?
Stir in 1 tablespoon cornstarch mixed with 2 tablespoons cold water and simmer for 5 minutes until thickened. For extra richness, whisk in 2 tablespoons heavy cream or a splash of beef broth. If it's too thick, thin with warm broth 1 tablespoon at a time while stirring.
Can I make this soup ahead of time?
Prepare the soup (without cheese) up to 3 days ahead and store in the fridge. Reheat gently on low heat with a splash of broth. For best results, add fresh croutons and cheese when reheating. The flavors actually improve overnight as the onions continue to meld with the broth.
