French Onion Soup Recipe with Caramelized Onions
French onion soup earns its reputation one slow hour at a time. The onions have to cook until they are soft, jammy, and a genuine deep amber. The broth has to be rich. The bread has to hold up under the cheese without turning to mush. Get those three things right and everything else follows naturally.
This french onion soup recipe skips nothing. You start with a pot of raw onions that looks like far too much, and you watch them collapse over 45 minutes into a sweet, concentrated base. The broth builds from that foundation, not the other way around. Then it goes under the broiler for a blistered Gruyère crust that holds together when you break through it with a spoon.
My mother made this every December in the same battered stockpot, always grumbling that it took too long and always making it again the following week. She was right on both counts.

Why You’ll Love This French Onion Soup
- The onions are caramelized properly, not just softened and called done
- No wine or alcohol required — the broth and grape juice provide all the depth you need
- The Gruyère crust holds together under the broiler instead of sliding off into the soup
- The soup base stores well for 4 days, so the actual work only happens once
- Everything comes from a single pot until the broiling stage
Ingredients You’ll Need
For the Soup Base
1.2 kg (about 6 large) yellow onions, halved and thinly sliced
Yellow onions have more natural sugar than white or red, so they caramelize deeper and faster.
3 tbsp unsalted butter
Provides richness and helps the onions cook without drying out.
1 tbsp olive oil
Combined with butter, it raises the smoke point so the onions cook evenly over longer cooking time.
1 tsp fine salt, divided
1/2 tsp sugar (optional)
Helps deepen color if the onions are taking longer than expected in the last 10 minutes.
4 garlic cloves, minced
1 tsp fresh thyme leaves (or 1/2 tsp dried)
2 bay leaves
1.5 liters (6 cups) halal-certified beef stock
Use a stock that tastes good on its own. Thin, overly salted stock will make a thin, overly salted soup.
2 tbsp dark grape juice or pomegranate juice
Replaces white wine. Provides acidity and some sweetness — pomegranate is slightly less sweet and a better match.
1 tsp soy sauce (halal-certified)
Adds umami without tasting like soy in the finished soup. Use sparingly.
Black pepper to taste
For the Croutons and Cheese Topping
1 French baguette, cut into 1.5 cm (about 1/2 inch) slices, 8 slices total
Day-old baguette works better than fresh — less moisture means it holds up longer under the broth.
150g (about 1.5 cups) Gruyère cheese, coarsely grated
Gruyère melts smoothly, has enough fat to form a proper crust, and has a nutty flavor that pairs with the onions.
30g (about 1/3 cup) Parmesan, finely grated (optional)
Mixed with Gruyère, it adds sharpness and helps the crust brown more evenly.
Recipe Timing
| Timing Element | Duration |
| Prep Time | 15 minutes |
| Caramelizing Onions | 45 minutes |
| Cook Time (broth simmering) | 25 minutes |
| Broiling Time | 5 minutes |
| Total Time | 90 minutes |
Servings: 4 | Difficulty: Medium | Cuisine: French | Course: Soup / Starter

How to Make French Onion Soup: Step by Step
Caramelize the Onions
Step 1: Place a large Dutch oven or heavy-bottomed pot over medium heat. Add the butter and olive oil. Once the butter melts and stops foaming, add all the sliced onions along with 1/2 tsp of the salt. Stir well to coat every piece in the fat.
Step 2: Reduce the heat to medium-low. Cook the onions uncovered, stirring every 5 to 8 minutes, for 40 to 50 minutes total. They are done when they have reduced dramatically in volume, turned a deep amber-brown color throughout, and smell sweet and caramel-like. They should look glossy and almost jam-like, not pale or just transparent.
Why this works: Low, steady heat converts the onions’ natural sugars through the Maillard reaction. High heat would create steam instead, leaving the onions watery and white at the center even if the outside colors quickly.
⚠️ Food Safety: If dark, dry patches form on the pot bottom, add 2 tablespoons of water and scrape them up immediately. These are flavor deposits, not burnt residue, and they dissolve back into the onions. A sharp, acrid smell means the heat is too high.

Step 3: Once the onions are deeply caramelized, add the minced garlic, thyme, and bay leaves directly to the pot. Stir and cook for 2 minutes until the garlic smells fragrant and no longer raw.
Step 4: Add the pomegranate juice (or dark grape juice) and use a wooden spoon to scrape every brown bit from the pot bottom. Cook for 1 to 2 minutes until the liquid has mostly evaporated and the pot bottom looks clean.
Why this works: This step is called deglazing. The browned residue on the bottom is concentrated onion flavor. Dissolving it back into the soup rather than leaving it stuck to the pot makes a noticeable difference in the final broth depth.
Build the Soup Base
Step 5: Pour in the beef stock. Add the remaining 1/2 tsp salt, the soy sauce, and a generous amount of black pepper. Raise the heat to medium-high and bring to a gentle boil, then reduce immediately to a low simmer.
Step 6: Simmer uncovered for 20 to 25 minutes. The soup will reduce slightly and deepen in color. Remove and discard the bay leaves. Taste and adjust salt — the broth should taste bold and savory without being harsh.
Why this works: Simmering uncovered allows the liquid to concentrate and lets the onion and stock flavors fully combine. A lid would trap moisture and dilute the soup.

Make the Croutons
Step 7: While the soup simmers, preheat your oven to 190°C (375°F). Arrange the baguette slices on a baking sheet in a single layer. Bake for 8 to 10 minutes until they are completely dry, pale golden, and firm all the way through when pressed at the center. They should feel like twice-baked toast, not regular bread. If any give when you press them, give them 3 more minutes.
Assemble and Broil
Step 8: Switch your oven to broil on high. Ladle the hot soup into 4 oven-safe crocks or bowls and set them on a rimmed baking sheet. Float 1 to 2 croutons on top of each bowl, covering most of the surface.
Step 9: Divide the grated Gruyère and Parmesan evenly over the croutons in each bowl. The cheese should fully cover the bread and slightly overlap onto the soup surface at the edges.
⚠️ Food Safety: The crocks will become very hot under the broiler. Always handle them with thick oven mitts, and keep children away from the oven during and immediately after broiling. Place the baking sheet on a heat-safe surface when you pull it out.
Step 10: Slide the baking sheet under the broiler, positioning it about 10 cm (4 inches) from the heat element. Broil for 3 to 5 minutes, watching continuously, until the cheese is fully melted, golden, and has a few lightly charred spots at the high points. Serve immediately.
Why this works: Direct broiler heat melts and browns the cheese from above without overcooking the soup below. The crouton underneath floats the cheese off the broth surface, keeping the crust intact rather than sinking.

Key Tips for Best Results
Use the right pot. A heavy-bottomed Dutch oven or enameled cast iron pot distributes heat evenly across the base. A thin pan creates hot spots that scorch the onions at the edges while the center stays pale. If you only have a thin pot, use the lowest setting on your smallest burner and stir more frequently.
Grate your own cheese. Pre-shredded Gruyère contains anti-caking agents that prevent smooth melting and cause the cheese to break into an oily, grainy texture under the broiler. A fresh block grated coarsely on the large holes of a box grater melts properly and forms a cohesive crust.
Taste the stock before you add it. If your beef stock tastes thin, salty, and flat from the carton, simmer it separately in a small pot for 15 minutes to concentrate it before adding it to the caramelized onions. This single step fixes bland soup more reliably than any seasoning adjustment after the fact.
Don’t overcrowd the cheese. 150g of Gruyère across 4 bowls is enough for a proper crust. Piling on more creates a thick, rubbery layer that doesn’t brown evenly and becomes difficult to eat through.
Common Mistakes to Avoid
Pulling the onions too early. This is the most common reason a french onion soup recipe falls flat. Onions that look slightly softened and smell a little sweet are not caramelized. You need deep amber color, a dramatic reduction in volume, and a texture that is genuinely soft and glossy throughout. If you are there in 20 minutes, the heat is too high and the onions are likely steaming rather than caramelizing.
Skipping the deglazing step. The browned layer on the pot bottom after the onions finish cooking is concentrated flavor. Adding the juice and scraping it up takes two minutes and adds noticeable depth to the finished broth. Rinsing the pot and starting fresh loses all of it.
Using soggy bread. Baguette slices straight from the bag will absorb broth within 60 seconds of going on top of the soup and disintegrate before the cheese even starts to melt. Bake them until they are fully dry and rigid. They should feel more like a cracker than bread before they go on the soup.
Broiling too long. Once the cheese is golden with light char spots, the soup is ready. An extra minute under the broiler pushes it from blistered to burnt. Stay at the oven for the entire broiling time.
Variations and Substitutions
Cheese swap. Comté is the closest substitute for Gruyère and melts in an almost identical way with a similar nutty depth. Swiss cheese (Emmental) works but has a milder flavor and less color under the broiler. Avoid mozzarella for this recipe — it melts fine but doesn’t brown well and has almost no flavor.
Depth without juice. If you don’t have pomegranate juice or grape juice, substitute with 1 tablespoon of dark apple juice and 1 teaspoon of balsamic vinegar. The balsamic adds the acidity the juice provides.
Vegetarian version. Replace beef stock with a full-flavored vegetable stock — not a light or low-sodium one. Add 1 tablespoon of tomato paste to the onions right after they finish caramelizing, cook it for 2 minutes, then proceed with the deglazing step. The soup will be lighter in color but still savory.
What to Serve With French Onion Soup
Simple green salad. A lightly dressed frisée or arugula salad with a sharp lemon vinaigrette cuts through the richness of the cheese and broth cleanly. Serve it alongside rather than before so both courses are eaten at the same time.
Extra baguette slices. Put a basket of plain toasted baguette on the table. People will want more bread for the remaining broth in the bowl.
Roast chicken. A simple roasted chicken after French onion soup makes a complete winter meal without either course overwhelming the other.
Grilled steak. The beefy depth of the soup leads naturally into steak. Both courses reinforce the same flavor profile instead of competing.
Serve it solo. This soup is a full meal with the crouton and cheese. It doesn’t need a course before or after it if the bowl is generous.

Storage, Reheating and Make-Ahead
Fridge: Store the soup base without croutons or cheese in an airtight container for up to 4 days. The flavors develop overnight and the soup tastes noticeably better on day two.
Freezer: Cool the soup base completely, then freeze in individual portion containers for up to 3 months. Do not freeze with croutons or cheese added. Thaw overnight in the fridge.
Reheat: Warm the soup base in a pot over medium heat until it reaches a full rolling simmer throughout (at least 75°C / 165°F). If it has thickened in the fridge, add a splash of warm beef stock and stir to loosen. Then assemble the croutons and cheese and broil fresh.
Make-ahead: Caramelize the onions up to 2 days in advance and store them in a sealed container in the fridge. They reheat in the pot within 5 minutes. Make the croutons on the morning of serving and leave them uncovered at room temperature — they stay dry and crisp without refrigeration. The only step that must happen right before eating is the broiling.
Allergen and Dietary Disclosure
Contains: Gluten (baguette), Dairy (butter, Gruyère, Parmesan), Soy (if using soy sauce).
To make this gluten-free, try substituting a certified gluten-free bread for the croutons and verifying that your beef stock and soy sauce are labeled gluten-free. Check your Gruyère packaging as well, since some imported cheeses are processed in facilities that handle gluten.
To make this lower in dairy, the soup base itself contains only butter. The cheese topping is where the bulk of the dairy comes from, and it is central to the recipe. A plant-based Gruyère-style cheese can be used, though it will not brown the same way under the broiler.
Nutrition Information
Per serving (approximately 1/4 of total recipe, including 2 croutons and full cheese topping):
| Nutrient | Per Serving |
| Calories | 550 kcal |
| Protein | 21 g |
| Total Carbohydrates | 55 g |
| Dietary Fiber | 5 g |
| Total Sugars | 14 g |
| Total Fat | 25 g |
| Saturated Fat | 14 g |
| Sodium | 1,450 mg |
| Cholesterol | 68 mg |
| Potassium | 580 mg |
| Calcium | 420 mg |
| Iron | 3 mg |
“Nutritional values are estimates only and may vary based on specific ingredients, brands, and portion sizes used. For precise dietary needs, consult a registered dietitian.”
Frequently Asked Questions
How long do I actually need to caramelize the onions?
Between 40 and 50 minutes over medium-low heat. Most recipes list 20 to 30 minutes, but at that point the onions are softened, not caramelized. You need deep amber color, a significant reduction in volume, and a texture that is soft and almost sticky. If you hit that point in 30 minutes, your heat was too high and the onions likely have pale centers.
Can I make French onion soup without wine?
Yes, and this recipe does it. The pomegranate juice provides acidity and color depth without alcohol. Dark grape juice or a small amount of dark apple juice with a splash of balsamic vinegar are also options. The beef stock and caramelized onions carry enough flavor that the substitution is not noticeable in the finished bowl.
What is the best cheese for French onion soup?
Gruyère, grated fresh from a block. It melts smoothly, browns well under the broiler, and has a nutty flavor that works naturally with the sweet onions. Comté is the closest alternative. Pre-shredded cheese of any variety should be avoided — the anti-caking coating prevents proper melting.
Can I make French onion soup ahead of time?
The soup base keeps in the fridge for up to 4 days and tastes better on day two. Make the croutons the morning you plan to serve. The only thing that must happen right before eating is the assembly and 5-minute broiling step — which is fast enough that it doesn’t count as last-minute cooking.
What onions should I use?
Yellow onions are the standard. They have enough natural sugar to caramelize properly and enough structure to hold up through the long cook. Sweet onions like Vidalia also work well and caramelize slightly faster. Red onions are fine in flavor but turn the broth a murky color. White onions caramelize well but have a sharper flavor in the finished soup.
Why does my French onion soup taste bland?
Two causes cover most cases: onions that didn’t caramelize long enough, or stock that was too thin. For the onions, look at the color. Pale yellow or gold means more time is needed. For the stock, taste it before adding. If it tastes watery from the carton, simmer it separately for 15 minutes to concentrate it before using.
Can I freeze French onion soup?
The soup base freezes well for up to 3 months. Freeze it without the croutons or cheese, which both become unusable after freezing. Thaw overnight in the fridge, reheat to a full simmer, then assemble and broil fresh. The quality after freezing is very close to freshly made.
Conclusion
French onion soup comes down to one step more than any other: whether you gave the onions the time they need. A 90-minute french onion soup recipe is not 45 minutes of actual cooking and 45 minutes of checking your phone — the onions need your attention every few minutes and they tell you when they are done by how they look and smell, not by the clock. Learn to read that and you can make this without looking at a recipe again.
The broth and Gruyère crust take care of themselves once the foundation is right. Make the soup base two days ahead, broil it fresh before serving, and put the extra baguette on the table. People will finish the bowl.
French Onion Soup Recipe Card

French Onion Soup Recipe with Caramelized Onions
Ingredients
Method
- Melt butter and olive oil in a large Dutch oven over medium heat. Add all sliced onions and 1/2 tsp salt. Stir to coat.
- Reduce heat to medium-low. Cook onions uncovered for 40 to 50 minutes, stirring every 5 to 8 minutes, until deep amber, greatly reduced, and glossy throughout.
- Add garlic, thyme, and bay leaves. Stir and cook 2 minutes until garlic is fragrant.
- Add pomegranate juice and scrape all browned bits from the pot bottom. Cook 1 to 2 minutes until liquid evaporates.
- Pour in beef stock. Add remaining 1/2 tsp salt, soy sauce, and black pepper. Bring to a gentle boil, then reduce to a low simmer.
- Simmer uncovered 20 to 25 minutes. Remove bay leaves. Taste and adjust salt.
- Preheat oven to 190°C (375°F). Bake baguette slices on a baking sheet 8 to 10 minutes until completely dry and firm throughout.
- Set oven to broil (high). Ladle hot soup into 4 oven-safe crocks on a rimmed baking sheet. Top each with 1 to 2 croutons.
- Cover croutons evenly with grated Gruyère and Parmesan.
- Broil 3 to 5 minutes, watching continuously, until cheese is fully melted, golden, and lightly charred at the peaks. Serve immediately.
