This comforting fish soup brings together white fish chunks and optional shrimp with onion, leek, carrots, potatoes and celery simmered in dry white wine, chopped tomatoes and fish stock. Sweat the aromatics, reduce the wine, then simmer vegetables until tender before gently poaching the seafood. Finish with parsley and lemon; serve with crusty bread for a warming, easy main.
The rain was hammering against the kitchen window that Tuesday evening, and I had a fillet of cod staring at me from the fridge with no real plan in mind. I rummaged through the vegetable drawer and found a leek, some tired carrots, and a half empty bottle of white wine left over from the weekend. Forty minutes later the whole apartment smelled like a seaside taverna, and my roommate walked in asking if we had accidentally moved to the coast. That bowl of fish soup was so good we made it again three nights later.
I have since made this soup for friends recovering from colds, for a quiet Friday night in, and once for a neighbor who stopped by to borrow tools and ended up staying for dinner. There is something about ladling hot broth over tender fish that makes people feel genuinely cared for. The best part is watching someone tear off a piece of crusty bread and dunk it without any pretense. That is exactly the kind of food I want to cook.
Ingredients
- White fish fillets (400 g): Cod or haddock work beautifully, and skinless boneless chunks cook evenly without any fussy prep.
- Shrimp (150 g, optional): They add a lovely sweetness and make the soup feel a bit more festive when you have them on hand.
- Onion (1 large): The quiet backbone of the broth, slowly softened until sweet and translucent.
- Garlic (2 cloves): Minced fine so it melts into the broth rather than catching you by surprise.
- Carrots (2): Sliced into thin rounds, they bring color and a gentle sweetness that balances the savory stock.
- Leek (1): Clean it thoroughly because grit hides between every layer, but the silky texture is worth the extra rinse.
- Potatoes (2 medium): Cubed small so they cook through and thicken the broth slightly as they break down.
- Celery (2 stalks): Diced and added early, it gives the soup an earthy depth you would miss if you skipped it.
- Chopped tomatoes (1 can, 400 g): They provide body and a subtle acidity that ties everything together.
- Fish stock (1 L): The soul of the soup, though vegetable stock works in a pinch if that is what the pantry offers.
- Dry white wine (100 ml): Just a splash to deglaze and lift the flavors, and the alcohol cooks off completely.
- Olive oil (2 tbsp): Use a good one here because its fruity flavor runs through every spoonful.
- Bay leaf, thyme, and oregano: A humble trio of dried herbs that somehow make the broth taste like it was made by someone who has been cooking for decades.
- Salt and pepper: Season gradually and taste as you go because the fish stock already carries salt.
- Fresh parsley and lemon wedges: The finishing touches that brighten each bowl and make it sing.
Instructions
- Build the foundation:
- Warm the olive oil in a large heavy pot over medium heat, then add the chopped onion and sliced leek, stirring occasionally until they soften and turn fragrant, about five minutes. You want them transluthe, not browned, so keep the heat gentle and patient.
- Wake up the vegetables:
- Stir in the garlic, carrots, celery, and cubed potatoes, letting them cook together for another five minutes until the garlic is aromatic and the edges of the vegetables just begin to soften. This brief saute concentrates their sweetness before any liquid joins the party.
- Deglaze with wine:
- Pour in the white wine and let it bubble for about two minutes, scraping up any bits stuck to the bottom of the pot because those are pure flavor. The kitchen will start smelling wonderful right about now.
- Simmer the broth:
- Add the chopped tomatoes, fish stock, bay leaf, thyme, and oregano, then bring everything to a boil before reducing the heat to low. Cover the pot and let it simmer gently for fifteen minutes until the vegetables are tender and the broth has deepened in color.
- Cook the fish:
- Gently slide the fish chunks and shrimp into the simmering broth, giving them space so they do not clump together. Let them poach softly for five to seven minutes until the fish flakes easily when pressed with a spoon and the shrimp curl and turn pink.
- Season and serve:
- Taste the broth and adjust with salt and pepper as needed, then fish out and discard the bay leaf. Ladle into warm bowls, scatter fresh parsley over the top, and set lemon wedges on the side so everyone can squeeze to their liking.
One winter I brought a thermos of this soup to a friend who was working outdoors all day, and she called me that evening to say it was the first thing in weeks that had made her feel warm from the inside out. That is the quiet power of a good fish soup. It asks for so little but gives back so much.
Choosing the Right Fish
Firm white fish is your best friend here because it holds its shape during the gentle simmer. Cod and haddock are classics for good reason, but I have used halibut, pollock, and even leftover baked salmon with great results. Frozen fillets work perfectly fine, just thaw them completely and pat them dry before cutting into chunks so they do not water down your broth.
Serving Ideas
Crusty bread is not optional in my kitchen when this soup is on the stove because you need something to soak up every last drop of that broth. A simple green salad with a sharp vinaigrette cuts through the richness nicely if you want to turn it into a full meal. On colder nights I have been known to serve it with a dollop of garlic aioli on the bread, which is completely inauthentic and completely delicious.
Storage and Reheating
This soup stores well in the refrigerator for up to two days, though the fish will continue to absorb the broth and become even more flavorful by the second day. Reheat it gently on the stove over low heat and never in a rolling boil or the fish will fall apart into tiny shards. I have also frozen portions successfully for up to a month, though the potatoes lose some of their firmness.
- Cool the soup completely before refrigerating to keep the fish from overcooking in residual heat.
- Avoid microwaving if possible because uneven heating can toughen the fish in spots.
- Always add fresh parsley and a new squeeze of lemon when reheating to wake up the flavors.
Keep this recipe close for the nights when you need something warm and honest on the table without a trip to the store. It has never once let me down, and I suspect it will become one of those dishes you reach for without even thinking.
Recipe Q&A
- → What stock should I use for the best flavor?
-
Fish stock adds the deepest seafood flavor, but a good-quality vegetable stock works well if you prefer milder notes. Taste as you go and adjust salt and acidity with lemon.
- → How can I avoid overcooking the fish?
-
Add fish and shrimp only at the end and keep the simmer gentle. Cook just until the fish flakes easily—usually 5–7 minutes—to preserve texture.
- → Can I make this dairy-free or creamy?
-
To keep it dairy-free, use olive oil and skip cream. For a creamy finish, stir in a splash of cream at the end, but add it off the heat to avoid breaking.
- → What can I substitute for white wine?
-
Use additional fish or vegetable stock with a splash of white wine vinegar or lemon juice to mimic the acidity. Reduce quantities to avoid overpowering the broth.
- → How should I store and reheat leftovers?
-
Refrigerate in an airtight container for up to 2 days. Reheat gently over low heat to avoid breaking the fish; add a little stock or water if the soup has thickened.
- → Any tips for boosting flavor or spice?
-
Add a pinch of chili flakes while sautéing the aromatics for heat, or finish with a grind of black pepper and a squeeze of lemon to elevate the broth's brightness.