This hearty fish soup brings tender white fish and optional shrimp together with carrots, potatoes, leek and tomatoes in a white-wine and stock base. Sauté aromatics, add vegetables and simmer until tender, then gently cook the fish until it flakes. Finish with parsley and lemon and serve with crusty bread. Total time about 50 minutes: 20 min prep, 30 min cook; season with thyme, oregano, salt and pepper.
The rain hammered against the kitchen window that Tuesday evening, and nothing in the pantry spoke to me until I spotted the frozen cod fillets buried behind a bag of peas. Forty minutes later, bowls of golden steaming fish soup turned a miserable night into something worth remembering. The smell of leeks softening in olive oil has since become my personal signal that everything will be okay. This soup is proof that simple ingredients, treated with patience, create something far greater than the sum of their parts.
My neighbor Clara knocked on my door the first time I made this, convinced I had ordered takeout from the little Portuguese place down the street. She stood in my doorway sniffing the air like a cartoon character floating toward a pie, and I handed her a bowl without hesitation. We sat on the couch eating soup and watching old detective shows while the rain kept pouring outside.
Ingredients
- 400 g white fish fillets (cod or haddock), skinless and boneless, cut into chunks: Cod is my go to because it holds its shape without turning mushy, but haddock works if that is what the fish counter has.
- 150 g shrimp, peeled and deveined (optional): These add a sweet pop of texture that makes the soup feel a bit more special for company.
- 1 large onion, finely chopped: The anonymous backbone of almost every good soup, quietly building sweetness from the bottom up.
- 2 garlic cloves, minced: Fresh is nonnegotiable here because the jarred stuff tastes flat against the delicate fish.
- 2 carrots, sliced: They bring color and a gentle sweetness that balances the savory broth.
- 1 leek, cleaned and sliced: Slice it lengthwise and rinse between every layer because hidden grit will ruin a beautiful bowl of soup instantly.
- 2 medium potatoes, peeled and cubed: These thicken the broth slightly as they cook and make the soup filling enough to be a meal on its own.
- 2 celery stalks, diced: Celery and fish are old friends, and the subtle herbal note it adds is worth including.
- 1 can (400 g) chopped tomatoes: They give the broth a warm golden red color and a gentle acidity.
- 1 L fish stock (or vegetable stock): Fish stock makes it taste like the sea in the best way, but vegetable stock works in a pinch.
- 100 ml dry white wine: A splash of something dry deglazes the pot and adds complexity you cannot get any other way.
- 2 tbsp olive oil: Good olive oil carries the flavor of the aromatics and keeps dairy out of the equation.
- 1 bay leaf: Just one does the job, and please remember to fish it out before serving.
- Half tsp dried thyme and half tsp dried oregano: These two together create an herbal aroma that is distinctly Mediterranean without overpowering the fish.
- Salt and pepper to taste: Season gradually and taste as you go because the stock already contributes salt.
- Fresh parsley, chopped, for garnish: A handful at the end brightens everything up visually and on the palate.
- Lemon wedges, for serving: A squeeze of lemon over the bowl at the table is not optional in my house, it is the finishing touch that wakes up every flavor.
Instructions
- Wake up the aromatics:
- Heat the olive oil in a large soup pot over medium heat and add the onion and leek, stirring occasionally until they soften and turn translucent, about five minutes. Your kitchen should smell like the beginning of something wonderful right about now.
- Build the foundation:
- Stir in the garlic, carrots, celery, and potatoes, letting them cook together for another five minutes until the garlic is fragrant and the edges of the vegetables begin to soften.
- Pour in the wine and liquids:
- Add the white wine and let it bubble for two minutes until it reduces slightly, then pour in the chopped tomatoes, fish stock, bay leaf, thyme, and oregano, stirring to combine everything into a beautiful rusty gold liquid.
- Let it simmer and meld:
- Bring the pot to a boil, then reduce the heat to low, cover it, and let everything simmer gently for fifteen minutes until the vegetables are tender when pierced with a fork.
- Add the fish and shrimp:
- Gently slide the fish chunks and shrimp into the simmering broth and cook for five to seven minutes more, just until the fish flakes easily and the shrimp turn pink. Do not stir aggressively or you will break the fish into unrecognizable bits.
- Season and serve:
- Taste the broth and add salt and pepper as needed, then discard the bay leaf before ladling into warm bowls. Top each bowl with a generous sprinkle of fresh parsley and serve with lemon wedges on the side.
That night with Clara turned into a standing Tuesday soup tradition that lasted through the entire winter. Some weeks she brought sourdough, other weeks I tried a new variation, but this fish soup remained the one we always came back to.
Serving Ideas
Thick slices of crusty bread are not optional in my mind because you need something to soak up every last drop of that broth. A simple green salad with a sharp vinaigrette on the side cuts through the richness beautifully and turns the bowl into a complete meal.
Making It Your Own
A pinch of chili flakes stirred in with the tomatoes changes the whole personality of the soup into something bolder and warmer. You can swap the white fish for salmon if you want a richer, oilier result, or even add a handful of mussels in the last few minutes for a proper seaside feast.
Storage and Reheating
This soup keeps well in the refrigerator for up to three days and the flavors actually deepen overnight, which makes it a great make ahead option. The fish will continue to absorb broth as it sits, so add a splash of water or stock when reheating.
- Freeze individual portions in airtight containers for up to three months and thaw overnight in the fridge before gently reheating on the stove.
- Avoid microwaving at full power because the fish toughens and the potatoes get a strange texture.
- Always garnish with fresh parsley and a new lemon wedge after reheating to bring the flavors back to life.
Some recipes earn a permanent spot in your rotation not because they are impressive but because they make an ordinary evening feel like a small act of care. This fish soup does exactly that, one warm bowl at a time.
Recipe FAQs
- → Which fish work best?
-
Firm white fish like cod, haddock or pollock hold their texture well; salmon or smoked fish give a richer flavor but require gentler handling to avoid overcooking.
- → How do I stop the fish from falling apart?
-
Cut uniform chunks, add them to a gently simmering broth (not a rolling boil) and cook only until the flesh flakes easily—typically 5–7 minutes depending on thickness.
- → Can I skip the white wine?
-
Yes. Substitute extra stock and a splash of lemon juice or a teaspoon of vinegar for brightness; low-sodium stock helps control overall seasoning.
- → How can I make it creamy while keeping dairy optional?
-
For dairy-free, rely on olive oil and starchy potatoes to thicken. For a creamy finish, stir in a small splash of cream at the end or blend a portion of the cooked potatoes into the broth.
- → Is it possible to prepare ahead or freeze?
-
Prepare the base (broth and vegetables) ahead and refrigerate. Freeze the broth/veggies before adding delicate fish. Reheat and add fresh fish at the end to maintain texture.
- → What should I serve alongside?
-
Crusty bread, a simple green salad or steamed greens work well. Lemon wedges and chopped parsley brighten the bowl just before serving.