Slowly caramelised onions form the sweet, savoury heart of this classic French soupe à l'oignon. A splash of dry white wine and a good vegetable stock build the broth, then it's finished under the grill with a Gruyère-topped baguette raft. Patience with the onions is the whole secret.
The magic here is time, not effort. Onions cooked low and slow turn jammy, sweet and mahogany-dark, giving the broth its unmistakable depth. Keep the heat gentle and stir often so they colour evenly without catching. Finished with a craggy Gruyère toast melted under the grill, it’s pure French bistro comfort in a bowl.
Ingredients
- 1 kg onions (2 lb 3 oz) — brown or a mix of brown and red, thinly sliced
- 50 g unsalted butter (1¾ oz)
- 1 tbsp olive oil
- 1 tsp caster sugar
- 2 cloves garlic — finely chopped
- 1 tbsp plain flour
- 150 ml dry white wine (5 fl oz) — or dry sherry
- 1.2 litres good vegetable stock (2 pints) — hot
- 2 sprigs fresh thyme — plus 1 bay leaf
- 1 tbsp brandy — optional, for finishing
- 1 small baguette — cut into 12 slices
- 150 g Gruyère (5½ oz) — coarsely grated
Method
- Melt the butter with the olive oil in a large heavy-based pan over a medium-low heat. Add the sliced onions and a good pinch of salt, stir to coat, then cover and let them soften for 10 minutes, stirring once or twice.
- Uncover, stir in the sugar and turn the heat to low. Cook the onions for 35-40 minutes, stirring every few minutes, until they collapse into a soft, deep golden-brown jam. Don't rush this stage — if they catch, add a splash of water and scrape up the sticky bits.
- Stir in the garlic and cook for 1 minute, then scatter over the flour and stir for another minute to cook it out.
- Pour in the wine, turn up the heat and let it bubble for 2 minutes, stirring, until the raw alcohol has cooked off. Add the hot stock, thyme and bay leaf, then bring to a gentle simmer.
- Simmer, part-covered, for 20 minutes so the flavours deepen. Fish out the thyme sprigs and bay leaf, then taste and season well with salt and plenty of black pepper. Stir through the brandy, if using.
- Meanwhile, heat the grill to high and toast the baguette slices on both sides until crisp and golden.
- Ladle the soup into four heatproof bowls set on a baking tray. Float the toasts on top, pile the grated Gruyère over them and slide under the grill for 3-4 minutes, until the cheese is molten, bubbling and browned at the edges. Serve at once, warning everyone the bowls are hot.
Serve it with
- A crisp green salad with mustard vinaigrette
- A glass of dry white wine
- Extra crusty baguette
- Cornichons and pâté for a bistro spread
Why this works
Cooking the onions slowly draws out and caramelises their natural sugars, building layers of sweet-savoury depth that a rushed sear can't match. The flour lightly thickens the broth so it clings to the spoon rather than running thin.
Common swaps
- Swap Gruyère for Comté, Emmental or a mature Cheddar
- Use dry sherry or extra stock in place of the white wine
- Vegan? Use plant butter, stock and a good melting vegan cheese
- Add a splash of dark soy or a teaspoon of miso for extra savoury depth
Common mistakes to avoid
- Rushing the onions on high heat so they burn rather than caramelise
- Under-seasoning — the deep flavour needs a confident hand with salt
- Using flimsy bowls that can't go under the grill; use heatproof ones
- Skimping on the cheese, so it doesn't form that classic bubbling crust
Storage, freezing & reheating
Storage: Cool and keep the soup (without the toast) in an airtight container in the fridge for up to 3 days. Add fresh toasts and cheese when reheating.
Freezing: Freezes well without the bread and cheese topping for up to 3 months. Defrost overnight in the fridge before reheating.
Reheating: Reheat the soup gently in a pan until piping hot, then add fresh toasts and grill the cheese as in the recipe.
Allergen notes: contains Milk, Gluten, Sulphites. Always check individual product labels.
Estimated nutrition
Per serving, estimated from typical ingredient values — not a substitute for precise dietary calculation.
| Calories | 420 kcal |
|---|---|
| Protein | 16 g |
| Carbohydrate | 38 g |
| Fat | 22 g |