Quick Recipe Version (TL;DR)
Quick Ingredients
- 3 tbsp olive oil
- 1 large onion, 2 leeks, 1 small fennel bulb, 4 garlic cloves
- 1 cup crushed tomatoes + 2 tbsp tomato paste
- 6 cups fish or seafood stock + 1 cup dry white wine
- 1 strip orange peel, 1 bay leaf, 1 tsp fennel seeds, 1 tsp thyme
- 1/4 tsp saffron threads, salt, pepper, pinch smoked paprika (optional)
- 2 lb firm white fish (cod, halibut, snapper, monkfish), in 2-inch chunks
- 1 lb mussels, 1 lb small clams, 3/4 lb large shrimp
- 2 medium waxy potatoes, sliced
- 1 baguette + 2–3 tbsp olive oil for toasts
- Fresh parsley and lemon wedges, for serving
- For rouille: 1 small potato, 2 garlic cloves, pinch saffron, 1 egg yolk, 1/2 cup extra-virgin olive oil, pinch cayenne, lemon juice, salt
Do This
- 1. Prep seafood (clean mussels/clams, cut fish, peel shrimp) and chop onion, leeks, fennel, garlic, and potatoes.
- 2. In a large heavy pot, sauté onion, leeks, and fennel in olive oil until soft; add garlic, tomato paste, and tomatoes and cook briefly.
- 3. Add wine, orange peel, bay, fennel seeds, thyme, saffron, stock, salt, and pepper; simmer 25–30 minutes to build a rich broth.
- 4. Optional: strain out solids for a smoother broth. Add sliced potatoes and simmer 10–12 minutes until almost tender.
- 5. Add firm fish and clams; simmer 5 minutes. Add mussels and shrimp; cook 4–5 minutes until fish is just cooked and shells open.
- 6. Meanwhile, make rouille by blending boiled potato, garlic, saffron, egg yolk, cayenne, salt, and olive oil into a thick, garlicky sauce; brighten with lemon.
- 7. Toast baguette slices with olive oil under the broiler, rub with garlic, spread with rouille, and serve alongside big bowls of bouillabaisse.
Why You’ll Love This Recipe
- It captures the soul of classic Provençal bouillabaisse with a deeply aromatic saffron-tomato broth.
- Uses an approachable mix of fish and shellfish you can find at a good supermarket or fishmonger.
- Rouille-smeared toasted baguette turns this into a restaurant-worthy, complete meal.
- Perfect for entertaining: the broth can be made ahead, then you add seafood at the last minute.
Grocery List
- Produce: Onion, leeks, fennel bulb, garlic, ripe tomato (or canned crushed tomatoes), potatoes (waxy for stew, 1 small for rouille), lemon, flat-leaf parsley, orange (for peel)
- Dairy: 1 large egg yolk (for rouille; keep refrigerated until ready to use)
- Pantry: Olive oil, extra-virgin olive oil, tomato paste, dry white wine, fish or seafood stock (or clam juice), baguette, saffron threads, bay leaf, fennel seeds, dried thyme, smoked paprika (optional), cayenne pepper or hot paprika, kosher salt, black pepper, Pernod or other anise liqueur (optional)
Full Ingredients
For the Bouillabaisse Broth
- 3 tbsp olive oil
- 1 large yellow onion, finely chopped (about 1 1/2 cups)
- 2 medium leeks, white and light green parts only, thinly sliced and well rinsed
- 1 small fennel bulb, cored and thinly sliced (about 1 1/2 cups)
- 4 garlic cloves, minced
- 1 large ripe tomato, chopped, or 1 cup canned crushed tomatoes
- 2 tbsp tomato paste
- 1 strip fresh orange peel (about 3 x 1 inch, avoid the bitter white pith)
- 1 bay leaf
- 1 tsp fennel seeds, lightly crushed
- 1 tsp dried thyme or 2 tsp fresh thyme leaves
- 1/4 tsp saffron threads, lightly crumbled
- 1/4 tsp smoked paprika (optional, for a subtle smoky note)
- 1 cup dry white wine (such as Sauvignon Blanc or Pinot Grigio)
- 6 cups fish stock or seafood stock, preferably low-sodium
- 1 tsp kosher salt, plus more to taste
- 1/2 tsp freshly ground black pepper, plus more to taste
- 2 tbsp Pernod or other anise-flavored liqueur (optional, added at the end)
For the Seafood and Vegetables
- 2 lb firm white fish fillets (such as cod, halibut, monkfish, red snapper, or sea bass), skin removed and cut into 2-inch chunks
- 1 lb mussels, scrubbed and debearded
- 1 lb small clams (such as littlenecks), scrubbed
- 3/4 lb large shrimp (16–20 count), peeled and deveined (tails on for presentation, if you like)
- 2 medium waxy potatoes (about 10 oz total), peeled and sliced into 1/4-inch rounds
- 2 tbsp olive oil (for finishing, optional)
- 2 tbsp chopped fresh flat-leaf parsley, for garnish
- Lemon wedges, for serving
For the Rouille (Garlic-Saffron Sauce)
- 1 small potato (about 3 oz), peeled and cut into chunks
- 1 pinch saffron threads
- 2 tbsp hot bouillabaisse broth (for blooming the saffron)
- 2 garlic cloves, roughly chopped
- 1 large egg yolk, at room temperature
- 1/4 tsp kosher salt, plus more to taste
- 1/8 tsp cayenne pepper or hot paprika (adjust to taste)
- 1/2 cup extra-virgin olive oil
- 1–2 tsp fresh lemon juice, to taste
For Serving
- 1 baguette, sliced on the bias into 1/2-inch-thick slices
- 2–3 tbsp olive oil, for brushing the bread
- 1 small garlic clove, peeled and halved (for rubbing the toasts, optional)

Step-by-Step Instructions
Step 1: Prep the Seafood and Vegetables
Pat the fish dry with paper towels and cut into 2-inch chunks. Keep the fish refrigerated while you prepare the broth. Scrub the mussels and clams under cold running water; discard any with cracked shells or those that stay open when tapped. Peel and devein the shrimp, leaving tails on if you like for a more traditional look; refrigerate.
Prepare the vegetables: finely chop the onion, slice and rinse the leeks thoroughly (they tend to be sandy), slice the fennel, mince the garlic, and peel and slice the potatoes into 1/4-inch rounds. Set everything near the stove so it is easy to add as you cook.
Step 2: Sweat the Aromatics for the Broth Base
In a large, heavy-bottomed pot or Dutch oven (6–8 quart), heat 3 tbsp olive oil over medium heat. Add the onion, leeks, and fennel with a small pinch of salt. Cook, stirring occasionally, until the vegetables are very soft and just starting to turn golden around the edges, about 8–10 minutes. You want them to gently sweeten, not brown aggressively.
Add the minced garlic and cook for 30–60 seconds, just until fragrant. Stir in the tomato paste and cook for 1–2 minutes to caramelize it slightly; it should darken a shade and smell rich and sweet, not raw. Add the chopped tomato or crushed tomatoes and cook another 2–3 minutes, stirring, until thick and jammy.
Step 3: Build the Saffron-Tomato Broth
Pour in the white wine and stir, scraping up any browned bits on the bottom of the pot. Let the wine simmer for 2–3 minutes to reduce slightly. Add the orange peel, bay leaf, crushed fennel seeds, thyme, saffron, smoked paprika (if using), fish stock, 1 tsp kosher salt, and 1/2 tsp black pepper. Stir well to combine.
Bring the mixture just up to a boil over medium-high heat, then immediately reduce to a gentle simmer. Partially cover the pot and cook for 25–30 minutes. This step extracts flavor from the aromatics and allows the saffron and orange to perfume the broth. Taste and adjust seasoning with more salt or pepper as needed; the broth should be well seasoned but not salty, since you will be adding seafood later.
Step 4: Strain (Optional) and Cook the Potatoes
For a more refined, classic restaurant-style bouillabaisse, you can strain the broth: set a large fine-mesh sieve or colander over a clean pot and pour the broth through, pressing on the solids with the back of a spoon to extract all the flavorful liquid. Discard the spent vegetables and aromatics. If you prefer a rustic style, you can skip straining and leave the softened vegetables in the pot.
Return the strained (or unstrained) broth to a gentle simmer. Add the sliced potatoes and cook, uncovered, until just fork-tender but not falling apart, about 10–12 minutes. Keep the heat at a simmer rather than a full boil; a gentle heat keeps the broth clear and flavors clean.
Step 5: Poach the Seafood Gently
Once the potatoes are almost tender, taste the broth again and adjust seasoning. Bring the broth back to a gentle simmer. Add the chunks of firm fish and the clams first, as they take a bit longer to cook. Cover and simmer very gently for 5 minutes.
Next, add the mussels and shrimp, stirring carefully so you do not break up the fish. Cover again and cook until the shrimp are opaque and pink, the fish is just cooked through and flakes easily, and all the shells have opened, about 4–5 minutes more. Discard any mussels or clams that do not open. If using Pernod, stir it in now and let the bouillabaisse simmer for 1 minute to mellow the alcohol. For a luxurious finish, you can drizzle in 2 tbsp olive oil off the heat.
Step 6: Make the Rouille
While the broth is simmering or the potatoes are cooking, prepare the rouille. Place the small potato chunks in a small saucepan, cover with cold water, add a pinch of salt, and bring to a boil. Reduce to a simmer and cook until very tender, about 10–12 minutes. Drain well and let steam dry for a minute.
In a small bowl, combine the pinch of saffron with 2 tbsp hot bouillabaisse broth and let it bloom for 2–3 minutes. In a blender, food processor, or mortar and pestle, combine the cooked potato, garlic, egg yolk, soaked saffron and its liquid, cayenne, and 1/4 tsp salt. Blend or mash to form a smooth paste. With the motor running (or while whisking vigorously), slowly drizzle in the 1/2 cup extra-virgin olive oil until the mixture thickens into a smooth, mayonnaise-like sauce. Add 1–2 tsp lemon juice to brighten and more salt or cayenne to taste. If it is too thick, thin with a teaspoon or two of warm broth. Keep chilled if making ahead, and use within 24 hours.
Step 7: Toast the Baguette and Serve
Heat your broiler to high or preheat the oven to 400°F (200°C). Arrange the baguette slices on a baking sheet and brush lightly on both sides with olive oil. Toast under the broiler for 1–2 minutes per side, or in the oven for 6–8 minutes, until light golden and crisp. If you like, rub the warm toasts with the cut side of a garlic clove for extra flavor.
To serve, ladle generous portions of broth, fish, and shellfish into warm shallow bowls, making sure each serving gets a good mix of seafood and potatoes. Sprinkle with chopped fresh parsley and add a lemon wedge to each bowl. Spread some rouille onto the warm baguette toasts and either float them on top of the bouillabaisse or serve them on the side for dipping. Serve immediately while everything is piping hot.
Pro Tips
- Choose firm fish: Ask your fishmonger for firm, meaty white fish that will hold up to gentle simmering, such as cod, halibut, monkfish, or snapper.
- Do not overcook seafood: Keep the broth at a gentle simmer, not a rolling boil. Overcooking will make fish dry and shrimp rubbery.
- Bloom the saffron: Letting saffron sit in a bit of hot broth (and in the rouille) brings out its color and flavor more fully than adding it dry.
- Season in layers: Lightly salt at each stage, then taste at the end; it is much easier to build balanced flavor than to fix an over-salted broth.
- Warm the bowls: Rinsing bowls with hot water or warming them briefly in a low oven helps keep the bouillabaisse hot at the table.
Variations
- Simplified weeknight version: Use just one or two types of fish plus shrimp, and rely on good-quality bottled clam juice mixed with chicken stock if fish stock is hard to find. The method stays the same.
- Spicier Provençal twist: Increase the cayenne in the rouille and add a pinch of red pepper flakes or a spoonful of harissa to the broth for gentle heat.
- No-shell version: Skip clams and mussels and use a mix of fish and peeled shrimp or scallops for easier eating (especially helpful if serving kids or guests who prefer fewer shells).
Storage & Make-Ahead
Bouillabaisse is best eaten fresh, as seafood can toughen when reheated. However, you can make the broth base (through the end of Step 3, before adding potatoes and seafood) up to 2 days in advance. Cool it quickly, refrigerate in an airtight container, and reheat to a gentle simmer when you are ready to finish the dish, then add potatoes and seafood as directed.
The rouille can be made up to 1 day ahead. Store it covered in the refrigerator and bring it to cool room temperature before serving. Because it contains egg yolk, use it within 24 hours and keep it chilled until use.
If you have leftover finished bouillabaisse, cool it promptly, refrigerate, and use within 1 day. Reheat gently over low heat, just until warmed through, to avoid overcooking the seafood. Freezing is not recommended once the seafood has been added, but the broth base (without seafood or potatoes) can be frozen for up to 3 months.
Nutrition (per serving)
Approximate values per serving (including broth, seafood, potatoes, and 2 rouille-topped baguette toasts): 600–650 calories; 40–45 g protein; 28–32 g fat; 40–45 g carbohydrates; 3–5 g fiber; 6–8 g sugars; 900–1100 mg sodium (will vary with stock and added salt). These values are estimates and will vary based on the exact types of fish and shellfish used, bread size, and how generously you apply the rouille.
