Serves 4
Prep 15 min
Cook 1h 30m
Total ~2 hours
Level Patient

Most recipes tell you to caramelise onions in 20 minutes. They are lying to you. Real caramelised onions — the kind that are jammy and dark amber and almost sweet enough to eat with a spoon — take between 45 minutes and an hour, over low heat, with occasional stirring and a stubborn refusal to rush. This is the entire recipe. Everything else is just assembly.

French onion soup is one of those dishes that looks like it requires skill but actually requires only one thing: time. Give it the time and it gives you back one of the most deeply flavoured, warming, dramatic things you can put in a bowl. The cheese-crusted bread lid is not decorative — it is structural. It holds the heat in while you break through it with a spoon and the soup beneath it is almost unreasonably good.

4
Servings

1 kg
Onions

~380
Cal per bowl

~2 hrs
Total time

Ingredients

1 kg yellow onions (about 5 large)
50 g unsalted butter
1 tbsp olive oil
1 tsp white sugar
200 ml dry white wine
1.2 L good beef stock
2 sprigs fresh thyme
1 bay leaf
1 tbsp plain flour
1 tsp Worcestershire sauce
Salt & pepper to taste
For the gratin topping
4 thick slices sourdough or baguette
150 g Gruyère, coarsely grated
1 tbsp butter, for the bread

On the stock: The stock is half of this recipe. A thin, pale, low-sodium carton stock will give you a thin, pale soup. Use the best beef stock you can — homemade is ideal, a good-quality shop-bought concentrate is fine. If you only have chicken stock, it works but loses some depth. Do not use stock cubes alone if you can avoid it; they make the soup taste salty and flat rather than rich.

Instructions

Slice the onions — all of them. Peel and halve each onion, then slice into thin half-moons, roughly 3–4 mm thick. Uniform thickness matters here because thicker pieces will still be underdone when the thin ones are already done. It is a lot of onion. It will cook down to about a fifth of its raw volume. This is expected.

Start them low and slow. Melt the butter with the olive oil in a wide, heavy-bottomed pot over medium-low heat. Add all the onions and a generous pinch of salt. The salt draws out moisture, which helps them soften before they colour. Stir to coat everything in fat, put a lid on, and leave for 10 minutes to let them sweat down.

The long caramelise — 45 to 60 minutes. Remove the lid, add the sugar, and reduce the heat to low. Now stir every 5–8 minutes, scraping any sticky bits from the bottom of the pot each time. The onions will go through phases: softened and translucent first, then pale gold, then deeper amber. You want deep, dark amber — the colour of toffee, almost mahogany at the edges. This is where all the flavour lives. Do not speed this up with high heat; you will get bitter, burnt onions instead of sweet caramelised ones.

Add the flour. Once the onions are deeply caramelised, sprinkle over the flour and stir it in. Cook for 2 minutes, stirring constantly, to cook off the raw flour taste. The mixture will look dry and paste-like. This is correct.

Deglaze with wine. Pour in the white wine and stir vigorously, scraping up any stuck bits from the bottom of the pot — this is where a lot of the flavour is concentrated. Let the wine bubble and reduce for about 3 minutes until mostly absorbed.

Add the stock and simmer. Pour in the beef stock, add the thyme sprigs, bay leaf, and Worcestershire sauce. Bring to a gentle simmer and cook uncovered for 25–30 minutes. The soup should reduce slightly and deepen in colour and flavour. Taste and adjust salt and pepper. Remove the thyme and bay leaf before serving.

Prepare the bread. While the soup simmers, slice the bread about 2 cm thick. Butter one side and place butter-side down in a dry pan over medium heat until deeply golden and crisp. Flip and toast the other side briefly. The bread needs to be genuinely toasted — not just warmed — or it will go soggy immediately under the soup and cheese.

Assemble and grill. Ladle the hot soup into oven-safe bowls placed on a baking tray. Set a slice of toasted bread on top of each — it should just fit inside the rim. Pile the grated Gruyère generously on top of the bread, letting it fall onto the soup surface around the edges. Place under a hot grill (broiler) for 3–5 minutes until the cheese is bubbling and has dark golden patches across the top.

Serve immediately and carefully. The bowls will be extremely hot. Carry them on the baking tray to the table. Warn whoever you’re serving. The cheese will have formed a crust — part of the pleasure is breaking through it with a spoon into the soup below.

Notes on Getting It Right

🧅
Yellow onions, not red. Red onions taste sharper and turn an unappetising grey-purple when cooked this long. Yellow onions have the right sugar content to caramelise properly and stay a rich amber colour. White onions work too. Shallots can be mixed in for complexity but are expensive to use as the main onion.
🍷
On the wine: A dry white wine (Sauvignon Blanc, Pinot Grigio) is classic. Dry vermouth is excellent and slightly more intense. Some people use red wine — it makes a darker, slightly more robust soup. A splash of Cognac or brandy added just before the stock is also traditional in older recipes and adds real depth.
🧀
The cheese lid is non-negotiable. Gruyère is the correct cheese — it melts smoothly, browns beautifully under the grill, and doesn’t release too much oil. Comté is equally good. Emmental works. Do not use mozzarella (too mild, goes stringy in the wrong way) or cheddar alone (can turn greasy). A mix of Gruyère and Parmesan is excellent if you want more saltiness and a harder crust.
🫙
Make it ahead. The soup base (without the bread and cheese) keeps in the fridge for 4–5 days and in the freezer for 3 months. It tastes better the next day after the flavours settle. Just reheat, add the bread and cheese, and grill to order. This makes it very practical for dinner parties — all the work is done before anyone arrives.
🥣
Bowl choice matters. You need oven-safe bowls that can go under the grill. Classic French lion-head soup crocks are ideal — wide mouth, thick ceramic walls that hold heat. If you don’t have them, any oven-safe bowl works as long as it’s ceramic or cast iron. Glass or thin porcelain can crack under grill heat.
Do not skip the long caramelise to save time. If you cook the onions for 20 minutes instead of 50, you will have a pale, slightly sweet, mostly flavourless soup with a cheese lid on top. The hour of caramelising is where the entire flavour of this dish is built. There is no shortcut that achieves the same result. Make this on a day when you have time to be near the stove.

The payoff

Two hours of low-effort, low-attention cooking — most of it is just waiting and occasional stirring — and you end up with something that tastes like it was made by someone who really knows what they are doing. The soup is intensely savoury, slightly sweet from the onions, rich from the stock and butter, and the cheese lid adds a salty, slightly crisp layer that makes every spoonful different. It is also one of the most impressive things you can serve at a dinner table because it arrives already assembled, still bubbling from the grill, and it looks extraordinary. Worth every minute of the wait.

Did you enjoy this post?

Leave a Comment