This Italian fish soup recipe is a tomato-based coastal classic made with firm white fish, shrimp, mussels, clams, aromatic vegetables, white wine, and a savory fish stock or clam juice broth. It serves 4–6 people, takes about 25–30 minutes to prepare and 35–45 minutes to cook, making it a comforting seafood dinner that can be on the table in about an hour.
Every spoonful brings together sweet tomatoes, fragrant garlic, mellow fennel, a gentle touch of red pepper, and tender seafood cooked in stages for the best texture. Serve it with grilled or toasted bread for soaking up the broth, and you have a satisfying meal that feels both rustic and special.
Jump to RecipeWhy You’ll Love This Recipe

This Italian fish soup is the kind of meal that makes a kitchen feel warm and welcoming. It begins with a simple soffritto of onion, fennel, and celery, then builds into a rich but balanced broth with garlic, tomato paste, white wine, and seafood stock.
The soup is hearty without feeling heavy. Firm white fish gives the bowls substance, shrimp add sweetness, and mussels and clams contribute a briny flavor that makes the tomato broth taste like a walk along the coast.
It is also wonderfully flexible. Italian fish soup is not one single standardized dish; it may resemble zuppa di pesce, regional brodetto, or an Italian-American cioppino. This version follows a practical tomato-based style that is easy to prepare at home while still tasting festive.
If you enjoy simple seafood dinners, our garlic butter fish is another delicious recipe to keep in your weeknight rotation.
Ingredients You’ll Need

The soup starts with four tablespoons of extra-virgin olive oil, one finely chopped yellow onion, one small fennel bulb, one celery stalk, and four garlic cloves. Fennel is optional but common in coastal versions, where its mild anise flavor pairs beautifully with fish and shellfish.
For gentle heat, use 1/4 teaspoon of red-pepper flakes, or add more to taste. Two tablespoons of tomato paste deepen the broth, while one cup of dry white wine adds brightness and helps lift the flavorful bits from the bottom of the pot.
A 28-ounce can of whole peeled tomatoes, crushed by hand, provides the tomato foundation. Add three cups of fish stock or bottled clam juice, one bay leaf, an optional small strip of lemon zest, one teaspoon kosher salt, and 1/2 teaspoon freshly ground black pepper.
For the seafood, prepare one pound of firm white fish cut into 1 1/2-inch pieces. Cod, halibut, haddock, monkfish, and snapper all work well. You will also need 1/2 pound of peeled and deveined shrimp, 1/2 pound each of scrubbed mussels and clams, and 1/2 pound of cleaned squid rings if using.
- Use seafood that smells clean and fresh, never strongly fishy.
- Keep fish pieces similar in size so they cook at an even pace.
- Have toasted bread ready before the soup finishes because it is best served immediately.
Read More: another cozy soup idea
How to Make It Step-by-Step

Step 1: Clean the shellfish before you begin cooking. Scrub the clams and mussels, remove the mussel beards, and tap any open shell against the counter; discard it if it does not close. This small check helps ensure that only healthy shellfish go into the pot.
Step 2: Warm the four tablespoons of olive oil in a large Dutch oven or heavy soup pot over medium heat. Add the onion, fennel, and celery, then cook for 6–8 minutes, stirring occasionally, until the vegetables are tender and translucent. Keep the heat moderate so the vegetables soften without browning.
Step 3: Add the sliced or minced garlic and red-pepper flakes. Stir constantly for about 30 seconds, just until the garlic smells fragrant. Garlic can turn bitter quickly, so do not let it take on a dark color.
Step 4: Stir in the tomato paste and cook for 1–2 minutes. This brief cooking time removes its raw taste and gives the broth a deeper tomato character. Pour in the white wine and simmer for 3–5 minutes, scraping up any flavorful bits from the bottom.
Step 5: Add the hand-crushed tomatoes, fish stock or clam juice, bay leaf, lemon zest, kosher salt, and black pepper. Bring the mixture to a gentle simmer, partially cover the pot, and cook for 20–25 minutes. This is when the aromatics and tomatoes become a cohesive broth.
Step 6: Add the firm fish pieces and squid rings, if using. Simmer gently for 3–4 minutes, taking care not to stir aggressively because the fish can break apart. A calm simmer keeps the broth clearer and the fish intact.
Step 7: Add the clams and mussels, then cover the pot. Cook for 4–6 minutes, or until the shells open. Do not force any shellfish open; discard clams or mussels that remain closed after cooking.
Step 8: Add the shrimp during the last 3–4 minutes of cooking. They are done when pink and just opaque, with a slight curve rather than a tightly curled shape. Cooking them at the end prevents a rubbery texture.
Step 9: Remove the bay leaf and lemon zest. Taste the broth and adjust the salt, black pepper, or red-pepper flakes as needed. Sprinkle in the chopped parsley and ladle the soup into warm bowls.
Step 10: Serve immediately with crusty grilled or toasted bread, an extra drizzle of olive oil, and lemon wedges if desired. Encourage everyone to use the bread to catch every drop of the tomato-rich broth.
Chef’s Tips for Tender Seafood
The most important technique is adding each seafood type according to its cooking time. Firm fish needs a little more time than shrimp, while clams and mussels need enough heat to open but can become tough if left simmering for too long.
Keep the broth at a gentle simmer once seafood is added. A vigorous boil can break delicate fish into flakes, make the broth cloudy, and cause shellfish to lose their tender texture.
Choose a broad mix of seafood, but do not feel obligated to use every option. Firm white fish, shrimp, and bivalves create a balanced bowl, while squid is a useful extra when you want another texture.
For a regional twist, brodetto may include vinegar, saffron, or paprika instead of relying on a strongly tomato-based broth. Cioppino-style versions may include crab, lobster, scallops, or extra shrimp, and often use more wine and tomato.
Some Italian versions keep the aromatics especially spare, using only onion, garlic, parsley, tomatoes, and fish. Fresh ripe tomatoes can replace canned tomatoes; use about two pounds, peeled and chopped.
Serving Suggestions

Toasted bread is not just a side dish here; it is part of the experience. Grill or toast thick slices until crisp, then rub them lightly with garlic if you like. The bread softens at the edges as it absorbs the broth while keeping enough texture for each bite.
Finish each serving with chopped Italian parsley and a thin ribbon of extra-virgin olive oil. Lemon wedges are optional, but a small squeeze can brighten the tomatoes and seafood just before eating.
For a relaxed dinner, serve the soup as the main course with a simple green salad. If you are planning a larger meal, keep the portions modest and follow with a light dessert such as this classic cherry crisp.
Read More: a hearty comfort-food casserole
Storage and Reheating

Because seafood is delicate, this soup is at its best immediately after cooking. If you have leftovers, cool them promptly, transfer them to a covered container, and refrigerate them for up to two days.
Reheat leftovers gently in a saucepan over low to medium heat until hot. Avoid a rolling boil, which can toughen the fish and shrimp. If possible, store the broth separately from the seafood and add fresh seafood when preparing the soup again.
Do not keep shellfish that were already discarded, and never eat mussels or clams that failed to open during cooking. When in doubt about the freshness or storage history of seafood, discard it.
Make-Ahead Notes
The tomato broth can be prepared a day ahead through the simmering stage, without adding the seafood. Cool and refrigerate it, then gently warm it before adding the fish, squid, clams, mussels, and shrimp according to the recipe timing.
This approach makes the soup especially useful for entertaining. The broth develops a fuller flavor overnight, while the seafood is still cooked just before serving so it remains tender.
Prepare the garnishes in advance as well. Chop the parsley, scrub the shellfish, cut the fish, and arrange the bread so the final cooking steps move quickly.
Read More: a homespun fruit dessert

Italian Fish Soup
Ingredients
Method
- Clean the shellfish, discarding mussels or clams that remain open after tapping and any shellfish that fail to open during cooking.
- Heat olive oil in a large Dutch oven over medium heat. Add onion, fennel, and celery and cook for 6–8 minutes until softened but not browned.
- Add garlic and red-pepper flakes and cook for about 30 seconds. Stir in tomato paste and cook for 1–2 minutes.
- Add white wine and simmer for 3–5 minutes, scraping the bottom of the pot. Add tomatoes, stock or clam juice, bay leaf, lemon zest, salt, and pepper.
- Bring the broth to a gentle simmer, partially cover, and cook for 20–25 minutes so the flavors develop.
- Add firm fish and squid, if using, and simmer gently for 3–4 minutes.
- Add clams and mussels, cover, and cook for 4–6 minutes until the shells open.
- Add shrimp during the final 3–4 minutes. They are ready when pink and just opaque. Discard any shellfish that do not open.
- Remove bay leaf and lemon zest. Taste and adjust seasoning, sprinkle with parsley, and serve immediately with toasted bread.
Notes
Final Thoughts
This Italian fish soup recipe brings the character of a coastal kitchen to your own table with familiar ingredients and careful timing. The tomato, wine, garlic, and stock create a broth with plenty of flavor, while the seafood remains the star because each ingredient is added at the right moment.
Use cod, halibut, haddock, monkfish, or snapper for the firm fish, then round out the pot with shrimp and whichever fresh shellfish looks best. Fennel adds a lovely coastal note, but the soup is still delicious without it.
Most of all, do not rush the final stage. Keep the simmer gentle, discard unopened shellfish, finish with parsley and olive oil, and bring the bowls to the table with plenty of toasted bread. This is a welcoming recipe for a family dinner, a chilly evening, or any occasion that calls for a generous bowl of comfort.