Bouillabaisse: The Marseille Fish Stew Worth the Effort

Real bouillabaisse from Marseille — the right fish, the rouille, and why the broth is the whole point. A proper recipe that doesn't cut corners.

🍽 Got a recipe? Jump to recipe ↓ ⏱ 1 hour 55 minutes · Advanced · 4 servings
a group of fish on a table
Photo: Najib Chari on Unsplash

The first time I ordered bouillabaisse in an actual restaurant in Marseille, I didn’t understand what I was looking at. Two courses arrived from a single dish: first the broth, poured tableside over toasted bread smeared with rouille, and then the fish, arranged separately on a platter like it had its own ceremony to attend. It wasn’t what I expected. It was better.

Back home, I spent the better part of two years making versions that were fine — good, even — but not that. The problem was I kept treating it like a fish soup I could throw together on a weeknight. Bouillabaisse is not that. It has a structure, a logic, and once you understand it, the whole dish clicks into place.

What Bouillabaisse Actually Is (And Isn’t)

Bouillabaisse comes from the Provençal words bolhir (to boil) and abaissar (to reduce). Fishermen made it from the unsellable catch — rockfish, scorpionfish, the bony, gelatinous creatures nobody wanted at market. They boiled them hard to extract every bit of flavor, strained the broth, then finished cooking the better fish in it.

That’s the structure that still matters today. It’s a two-stage dish: an intensely flavored base built from aromatics and cheaper fish, then noble seafood gently cooked in that liquid right before serving. The broth is the point. The seafood is the payoff.

What it isn’t: a cream-based chowder, a tomato-heavy Italian fish stew, or anything you can make with a can of clam juice. If you’ve had versions that tasted like those things, someone took a shortcut.

Building the Base — This Is Where the Flavor Lives

The broth starts with aromatics sweated down in good olive oil: onion, leek, fennel, garlic. Fennel is non-negotiable — it’s part of the flavor identity of the dish. Add a couple of very ripe tomatoes (or a generous spoonful of tomato paste if it’s not peak summer), a strip of orange peel, a bay leaf, fresh thyme, and a pinch of saffron threads that you’ve bloomed in a little warm water first.

Blooming saffron matters. The threads release more color and flavor when they steep in warm liquid for a few minutes before hitting the pot. Skipping this step is the difference between a broth that’s vaguely yellow and one that glows.

Once the aromatics are soft and starting to stick to the bottom of the pot — those little browned bits are flavor, coax them up with a splash of white wine — add your base fish. In Marseille this would be rockfish, gurnard, or weever. Outside France, look for any firm, bony, inexpensive whole fish or fish frames from your fishmonger. What you’re after is gelatin and flavor, not pretty fillets. Cover with water or a light fish stock, bring it to a hard boil (that vigorous boil helps emulsify the olive oil into the broth, giving it body), and cook for 45 minutes.

Then strain everything. Press the solids hard through a fine sieve. What comes out is a rust-colored, deeply aromatic broth that smells like the sea and fennel and something you can’t quite name.

The Fish Order Matters More Than You Think

Here’s where most home versions go wrong: adding all the seafood at once. Different fish cook at wildly different speeds, and overcooked seafood is the most avoidable tragedy in cooking.

For 4 people, you want about 1.2kg (2.6 lbs) of mixed seafood total. Bring your strained broth back to a simmer and add things in stages:

  • First in (10-12 minutes): Firm, thick pieces — monkfish, sea bass, john dory
  • Middle (5-6 minutes): Smaller whole fish, mussels, clams
  • Last (2-3 minutes): Prawns, langoustines, squid rings, scallops

The broth should be simmering, not boiling hard. You want the fish to poach gently in that liquid, absorbing the saffron and fennel while giving back their own juices.

Rouille: The Thing That Ties It All Together

Rouille is a garlicky, saffron-spiked mayonnaise that gets spread on toasted slices of baguette. It’s not optional. The combination of the rich, spiced broth, the rustic crouton, and the sharp, creamy rouille is the whole dish in a single spoonful.

You can make rouille the cheats’ way — start with good store-bought mayo, add a crushed clove of raw garlic, a pinch of bloomed saffron, a pinch of cayenne, and a little lemon juice. Stir, taste, adjust. It won’t be identical to a hand-pounded version, but it’ll be very good, and it’s an honest substitution on a weeknight.

For the full version, pound garlic and a pinch of salt to a paste in a mortar, work in egg yolk and saffron, then drizzle in 120ml (½ cup) of olive oil as if you’re making aioli — slowly, patiently, until it emulsifies into something thick and burnished gold.

A Note on Saffron

Good saffron is expensive. Bad saffron is a waste of money. If yours has no smell, it’s old or fake. Real saffron smells like honey and hay with something slightly metallic underneath. You only need a small pinch — about 20-25 threads — for this recipe. Store it somewhere cool and dark, not next to the stove.

If saffron genuinely isn’t in the budget, a small amount of sweet smoked paprika won’t replicate it but will add color and warmth. Just know you’re making a different dish.

Try It This Weekend

Bouillabaisse rewards patience more than skill. The technique isn’t complicated — it’s sequential. Make the base. Strain it. Add the fish in stages. Make the rouille while the broth does its work.

Start on a Saturday when you’re not in a rush. Go to a proper fishmonger if you can find one, tell them what you’re making, and ask what’s good. Bring a wide, heavy pot. Serve the broth first, in deep bowls, with rouille-smeared bread floating on top. Then bring out the fish. Make it two courses, the way it’s meant to be eaten.

Set the table like it matters. It does.

Bouillabaisse: The Marseille Fish Stew Worth the Effort

🕐
Prep
40 minutes
🍳
Cook
1 hour 15 minutes
Total
1 hour 55 minutes
👥
Serves
4
📊
Difficulty
Advanced

Ingredients

  • For the broth base:
  • 80ml (⅓ cup) good olive oil
  • 1 large onion, roughly chopped
  • 1 leek, white and light green parts, sliced
  • 1 fennel bulb, roughly chopped (fronds reserved)
  • 6 garlic cloves, smashed
  • 2 ripe tomatoes, chopped (or 2 tbsp tomato paste)
  • 1 strip orange peel (about 7cm / 3 inches)
  • 2 bay leaves
  • 4 sprigs fresh thyme
  • 25 saffron threads, bloomed in 2 tbsp warm water
  • 150ml (⅔ cup) dry white wine
  • 800g (1.75 lbs) inexpensive bony fish — whole or frames (rockfish, gurnard, or ask your fishmonger for frames)
  • 1.5 litres (6 cups) water or light fish stock
  • 1 tsp fine sea salt, plus more to taste
  • For the seafood:
  • 400g (14 oz) firm white fish fillets — monkfish, sea bass, or john dory, cut into 5cm (2 inch) chunks
  • 300g (10.5 oz) mussels or clams, scrubbed
  • 300g (10.5 oz) whole prawns or langoustines, shell on
  • 200g (7 oz) small whole fish such as red mullet, cleaned (optional but traditional)
  • For the rouille:
  • 3 cloves garlic, peeled
  • Pinch fine sea salt
  • 1 egg yolk, room temperature
  • 10 saffron threads, bloomed in 1 tsp warm water
  • Pinch of cayenne
  • 120ml (½ cup) olive oil
  • 1 tsp lemon juice
  • To serve:
  • 1 baguette, sliced 1.5cm (½ inch) thick and toasted until deeply golden

Instructions

  1. 1 Make the rouille first so it can sit while you cook. In a mortar, pound garlic and salt to a smooth paste. Work in egg yolk and saffron water. Drizzle in olive oil in a thin, steady stream, working continuously until thick and emulsified — this takes about 5 minutes. Stir in cayenne and lemon juice. Taste and adjust salt. Refrigerate until needed.
  2. 2 In a large, heavy pot (at least 6 litres / 6 quarts), warm olive oil over medium heat. Add onion, leek, fennel, and garlic. Cook, stirring occasionally, for 10-12 minutes until completely soft and just starting to turn golden.
  3. 3 Add tomatoes (or tomato paste), orange peel, bay leaves, and thyme. Stir and cook 3-4 minutes until tomatoes break down and the paste, if using, darkens slightly and smells sweeter.
  4. 4 Pour in white wine and scrape up anything stuck to the base of the pot. Let it bubble for 2 minutes.
  5. 5 Add the base fish (frames or whole bony fish), saffron water, and 1.5 litres (6 cups) water or stock. Bring to a vigorous boil — this hard boil helps emulsify the oil into the broth — then maintain a strong simmer for 45 minutes.
  6. 6 Strain the broth through a fine sieve into a large bowl, pressing hard on the solids with the back of a spoon to extract everything. Discard solids. Taste and season the broth with salt. It should be deeply aromatic, rust-tinged, and rich. Return to the pot.
  7. 7 Bring strained broth to a steady simmer over medium heat. Add firm fish chunks first — monkfish or sea bass. Cook 8-10 minutes.
  8. 8 Add mussels, clams, and any small whole fish. Cover and cook 4-5 minutes until shells open. Discard any that stay closed.
  9. 9 Add prawns or langoustines. Cook uncovered for 2-3 minutes until just pink and opaque. Do not overcook.
  10. 10 Ladle the broth into warmed deep bowls first, with toasted bread slices smeared generously with rouille floating on top. Serve the seafood on a separate platter at the table, or arrange it over the broth just before bringing the bowls out.

Notes

Leftovers: The broth keeps well for 3 days refrigerated and actually deepens overnight — reheat gently. Cooked seafood does not keep; eat it the same day. Substitutions: Outside France, the key is variety and freshness over specific species. Ask your fishmonger what's freshest. For the base fish, any inexpensive frames or heads work — salmon frames are cheap and gelatinous. Saffron substitution: a small amount of sweet smoked paprika plus a pinch of turmeric gives color but not the same flavor. Difficulty note: nothing here is technically hard, but this dish has stages and doesn't forgive rushing. Read the whole recipe before you start.

Annons