Quick Recipe Version (TL;DR)
Quick Ingredients
- 3 tbsp extra-virgin olive oil
- 1 large fennel bulb (about 10 oz), cored and thinly sliced (reserve fronds)
- 1 medium yellow onion, chopped
- 2 celery stalks, chopped
- 4 garlic cloves, minced
- 1/2 tsp red pepper flakes
- 2 tbsp tomato paste
- 1 cup dry white wine
- 1 (28 oz) can crushed tomatoes
- 2 cups seafood stock (or fish stock)
- 1 cup bottled clam juice
- 1 bay leaf
- 1 tsp dried oregano
- 1/2 tsp dried thyme
- 1 tsp kosher salt, plus more to taste
- 1/2 tsp freshly ground black pepper, plus more to taste
- 2 lb mussels, scrubbed and debearded
- 1 lb large shrimp (21–25 count), peeled and deveined
- 1 lb firm white fish (cod or halibut), cut into 1 1/2-inch chunks
- 2 tbsp lemon juice
- 1/2 cup chopped fresh parsley
- Crusty sourdough bread, for serving
Do This
- 1. Sweat fennel, onion, and celery in olive oil until soft.
- 2. Stir in garlic, red pepper flakes, and tomato paste; cook 1 minute.
- 3. Add wine; simmer 3 minutes, then add tomatoes, stock, clam juice, and herbs; simmer 20 minutes.
- 4. Add fish; simmer gently 3 minutes.
- 5. Add mussels; cover and steam 5–7 minutes until opened.
- 6. Add shrimp; cook 2–3 minutes until just pink.
- 7. Finish with lemon and parsley; serve with warm crusty bread.
Why You’ll Love This Recipe
- Restaurant-worthy but doable: One big pot, simple techniques, huge flavor payoff.
- Bright, balanced broth: Tomatoes and white wine are mellowed by fennel, then lifted with lemon and parsley.
- Perfect seafood texture: A gentle simmer keeps the fish flaky and the shrimp tender.
- Made for bread: The rustic, briny tomato broth practically demands crusty sourdough for soaking.
Grocery List
- Produce: 1 large fennel bulb, 1 medium yellow onion, 2 celery stalks, 4 garlic cloves, 1 lemon, 1 bunch Italian parsley
- Dairy: Unsalted butter (optional, for a richer finish)
- Pantry: Extra-virgin olive oil, red pepper flakes, tomato paste, 1 (28 oz) can crushed tomatoes, seafood stock (or fish stock), bottled clam juice, bay leaf, dried oregano, dried thyme, kosher salt, black pepper, crusty sourdough bread
- Seafood: 2 lb mussels, 1 lb large shrimp (21–25 count), 1 lb firm white fish (cod or halibut)
- Beverages: Dry white wine (use a drinkable one)
Full Ingredients
Seafood (prep first)
- Mussels: 2 lb mussels, scrubbed and debearded (discard any cracked shells; discard any open mussels that don’t close when tapped)
- Shrimp: 1 lb large shrimp (21–25 count), peeled and deveined (tails on or off, your choice)
- Fish: 1 lb firm white fish (cod or halibut), cut into 1 1/2-inch chunks
Aromatics and stew base
- 3 tbsp extra-virgin olive oil
- 1 large fennel bulb (about 10 oz), cored and thinly sliced (reserve 1 tbsp chopped fronds for garnish, optional)
- 1 medium yellow onion (about 8 oz), chopped
- 2 celery stalks, chopped
- 4 garlic cloves, minced
- 1/2 tsp red pepper flakes
- 2 tbsp tomato paste
- 1 cup dry white wine
- 1 (28 oz) can crushed tomatoes
- 2 cups seafood stock (or fish stock)
- 1 cup bottled clam juice
- 1 bay leaf
- 1 tsp dried oregano
- 1/2 tsp dried thyme
- 1 tsp kosher salt, plus more to taste
- 1/2 tsp freshly ground black pepper, plus more to taste
Finish and serve
- 2 tbsp lemon juice (about 1/2 lemon), plus more to taste
- 1/2 cup chopped fresh parsley
- 1 tbsp chopped fennel fronds (optional)
- Crusty sourdough bread, warmed, for serving
- Optional: 1 tbsp unsalted butter, stirred in at the end for a silkier broth

Step-by-Step Instructions
Step 1: Prep the seafood and set it aside
Rinse and scrub the mussels under cold running water, pulling off any beards. Discard any mussels with cracked shells. If a mussel is open, tap it firmly on the counter; if it doesn’t close within 30 seconds, discard it.
Pat the shrimp dry and keep chilled. Cut the fish into 1 1/2-inch chunks and keep chilled as well. (Cold seafood is easier to cook gently without overcooking.)
Step 2: Sweat the fennel, onion, and celery
Set a large heavy pot or Dutch oven (6 to 8 quarts) over medium heat. Add 3 tbsp olive oil. Once the oil shimmers, add the sliced fennel, chopped onion, and chopped celery.
Cook, stirring occasionally, until the vegetables are softened and lightly translucent, 8 to 10 minutes. You’re building sweetness here, so don’t rush it.
Step 3: Bloom the aromatics and tomato paste
Add the minced garlic and 1/2 tsp red pepper flakes. Cook, stirring, until fragrant, 30 seconds.
Stir in 2 tbsp tomato paste and cook until it darkens slightly and coats the vegetables, 1 minute. This quick step deepens the stew’s flavor and keeps it from tasting flat.
Step 4: Deglaze with wine, then build the broth
Pour in 1 cup dry white wine and scrape up any browned bits from the bottom of the pot. Simmer until the wine reduces slightly, 3 minutes.
Add the crushed tomatoes, seafood stock, clam juice, bay leaf, oregano, thyme, 1 tsp kosher salt, and 1/2 tsp black pepper. Bring the pot to a gentle boil over medium-high heat, then reduce to medium-low to maintain a steady simmer.
Step 5: Simmer to meld flavors
Simmer the broth uncovered for 20 minutes, stirring occasionally. You want a lively simmer (small bubbles), not a rolling boil, which can make seafood tough later.
Taste the broth and adjust salt and pepper now—before the seafood goes in.
Step 6: Cook the fish gently
Add the fish chunks to the simmering broth and gently stir once to submerge them. Simmer until the fish is just starting to turn opaque on the outside, 3 minutes.
Keep the heat at a gentle simmer. If it’s boiling hard, lower the heat.
Step 7: Steam the mussels, then finish with shrimp
Add the mussels, stir to nestle them into the broth, then cover the pot tightly. Cook until the mussels open, 5 to 7 minutes, giving the pot a careful shake once halfway through.
Uncover and discard any mussels that have not opened.
Add the shrimp and stir gently. Cook just until the shrimp are pink and opaque, 2 to 3 minutes. (They will keep cooking a bit from the residual heat.)
Step 8: Brighten, garnish, and serve with bread
Turn off the heat. Stir in 2 tbsp lemon juice and 1/2 cup chopped parsley. If using, stir in 1 tbsp unsalted butter for a richer finish.
Ladle into warm bowls, making sure each serving gets fish, shrimp, and several mussels. Garnish with fennel fronds if you saved them. Serve immediately with warm crusty sourdough bread for soaking.
Pro Tips
- Keep the simmer gentle: A hard boil can make shrimp rubbery and fish fall apart. Aim for small, steady bubbles.
- Season in layers: Add the listed salt early, then fine-tune right before adding seafood and again after lemon/parsley.
- Use a wine you’d drink: If it tastes sharp or unpleasant in the glass, it will taste that way in the broth.
- Don’t overcook the shrimp: Pull the pot off heat as soon as they turn pink; carryover heat finishes the job.
- Broth too thick? Add 1/4 cup stock or water at a time to loosen. Too thin? Simmer uncovered 5 more minutes before adding seafood.
Variations
- Add crab (classic SF touch): Add 1 to 1 1/2 lb cooked Dungeness crab pieces during the last 2 minutes just to warm through.
- Swap the fish: Use striped bass, rockfish, or lingcod. Avoid delicate fish (like sole), which can break apart.
- Make it extra fennel-forward: Add 1/2 tsp crushed fennel seed with the red pepper flakes.
Storage & Make-Ahead
Cioppino is best the day it’s made, when the seafood is perfectly tender. If you have leftovers, cool promptly and refrigerate in an airtight container for up to 2 days. Reheat gently in a pot over medium-low heat until steaming hot and the broth reaches 165°F, stirring carefully to avoid breaking up the fish. If possible, store any leftover bread separately so it stays crisp.
Make-ahead tip: You can make the tomato-wine broth (through Step 5) up to 2 days ahead. Cool, refrigerate, then rewarm to a simmer and finish with the seafood right before serving.
Nutrition (per serving)
Approximate, based on 6 servings (not including bread): 420 calories, 45 g protein, 14 g fat, 22 g carbohydrates, 4 g fiber, 980 mg sodium.
