The first time I made fish soup, I turned a perfectly good piece of cod into sad, grey confetti.
Silas ate it anyway, which tells you everything you need to know about him.
It took me a few more tries to figure out the fix, and it was almost embarrassingly simple. Fish needs way less time than you think. Like, shockingly less.
This easy fish soup is tomato based, packed with soft potatoes and carrots, and finished with a squeeze of fresh lemon. It takes about 40 minutes from cutting board to bowl, and it all happens in one pot.
Side Note: If you have only ever had fish soup at a restaurant and assumed it was too fussy to make at home, this recipe is going to change your mind.
Why This Fish Soup Recipe Works
I have made a lot of soups on this blog, and this one has become a quiet favorite in our house. Here is why.
- The base builds real flavor. Onion, carrot, celery, and tomato paste cook down first, so the broth tastes like it simmered for hours.
- The fish goes in last. It cooks gently for just a few minutes, so every chunk stays tender instead of rubbery.
- It uses everyday ingredients. No fancy seafood stock is required, and you can find almost everything at a regular grocery store.
- It is light but filling. The potatoes make it hearty, and the lemon keeps it from feeling heavy.
And here is a surprise that stuck with me. Fish is one of the few proteins that can go from perfect to ruined in about two minutes. Once you know that, you cook with a lot more confidence.
What You’ll Need
Here is everything that goes into the pot. Nothing weird, I promise.
| Ingredient | Amount |
|---|---|
| Olive oil | 2 tablespoons |
| Yellow onion, diced | 1 medium |
| Carrots, peeled and diced | 2 medium |
| Celery stalks, diced | 2 |
| Garlic cloves, minced | 4 |
| Tomato paste | 2 tablespoons |
| Smoked paprika | 1 teaspoon |
| Dried thyme | 1/2 teaspoon |
| Red pepper flakes | 1/4 teaspoon |
| Yukon Gold potatoes, cut into 1/2 inch cubes | 1 pound |
| Diced tomatoes, canned | 1 can (14.5 ounces) |
| Fish stock or low sodium vegetable stock | 4 cups |
| Bay leaf | 1 |
| Cod fillets, cut into 1 1/2 inch chunks | 1 1/2 pounds |
| Salt | 1 teaspoon, plus more to taste |
| Black pepper | 1/2 teaspoon |
| Fresh lemon, juiced | 1 |
| Fresh parsley, chopped | 1/4 cup |
| Crusty bread, for serving | 1 loaf |
Tools Required
You do not need anything special for this one.
- Large Dutch oven or heavy soup pot
- Sharp chef’s knife
- Cutting board
- Wooden spoon
- Measuring cups and spoons
- Ladle
- Citrus juicer or just a fork and your hands
- Instant read thermometer (optional, but really helpful)
Read this also: Hamburger Soup Recipe That Tastes Like It Simmered All Day
Pro Tips for Making Fish Soup the First Time
These come from my own messy trial and error, so you get to skip the grey confetti stage.
- Pick firm white fish. Cod, haddock, and halibut hold their shape in hot broth. Delicate fish like sole tends to fall apart.
- Pat the fish dry before seasoning. It helps the salt stick and keeps the broth from turning cloudy.
- Turn the heat down before the fish goes in. A gentle simmer with tiny bubbles is what you want, not a rolling boil.
- Do not stir after adding the fish. Just nudge the pot gently. Stirring breaks the chunks apart fast.
- Add lemon at the very end. Cooking it too long dulls the bright flavor.
How to Make Fish Soup Step by Step

Step 1: Get Everything Ready
Dice the onion, carrots, and celery. Mince the garlic and cube the potatoes.
Cut the cod into chunks about 1 1/2 inches wide. Pat them dry with paper towels, then sprinkle with half the salt and all the black pepper. Set them in the fridge while you start the soup.
Step 2: Soften the Vegetables
Heat the olive oil in your Dutch oven over medium heat. Add the onion, carrots, and celery.
Cook for 6 to 8 minutes, stirring now and then, until the onion looks soft and glossy.
Step 3: Build the Flavor
Stir in the garlic, tomato paste, smoked paprika, thyme, and red pepper flakes. Cook for about 1 minute.
The tomato paste will darken slightly and smell sweet and toasty. That is exactly what you want.
Step 4: Simmer the Base
Add the potatoes, canned tomatoes, stock, bay leaf, and the remaining salt. Bring everything to a boil, then reduce the heat to a gentle simmer.
Cover partially and cook for 15 minutes, or until a fork slides easily into a potato cube.
Step 5: Add the Fish
Lower the heat so the soup barely bubbles. Slide the cod chunks into the pot in a single layer as best you can.
Cover and cook for 5 to 6 minutes. The fish is done when it turns opaque and flakes easily with a fork. If you use a thermometer, the safe internal temperature for fish is 145°F.
Step 6: Finish and Serve
Remove the bay leaf. Gently stir in the lemon juice and half the parsley.
Taste the broth and add a pinch more salt if it needs it. Ladle into bowls, top with the rest of the parsley, and serve with warm crusty bread.
Read this also: Sausage Lentil Soup With 3 Tricks Most Recipes Skip
Fish Soup Substitutions and Variations
This recipe is flexible. Here are swaps that work well.
| If You Want | Try This |
|---|---|
| A different fish | Haddock, halibut, pollock, or tilapia |
| Extra seafood | Add 1/2 pound shrimp in the last 3 minutes |
| A creamier broth | Stir in 1/2 cup coconut milk or heavy cream at the end |
| No fish stock | Use low sodium vegetable or chicken stock |
| Dairy free | This recipe already is, just skip any cream |
| Gluten free | Serve with gluten free bread or over rice |
| More heat | Double the red pepper flakes or add a diced jalapeño |
| Fresh tomatoes | Use 4 large ripe tomatoes, chopped, instead of canned |
Flavor Variations to Try
- Mediterranean style: Add a handful of olives and a splash of white wine after the garlic.
- Coconut curry style: Swap the paprika for 1 tablespoon curry powder and use coconut milk for part of the stock.
- Extra veggie style: Stir in a few handfuls of spinach right before serving.
Make Ahead Tips
You can do most of the work before dinner, which is great for busy evenings.
- Prep the base up to 2 days ahead. Cook the soup through Step 4, cool it, and store it in the fridge.
- Chop the vegetables early. Diced onion, carrot, and celery keep well in an airtight container for a couple of days.
- Add the fish fresh. Reheat the base until simmering, then cook the fish in it. This gives you the best texture.
Nutrition Snapshot
This is a rough estimate per serving, based on 4 servings. Exact numbers change depending on your brands and portions.
| Nutrient | Approximate Amount |
|---|---|
| Calories | 330 |
| Protein | 32 grams |
| Carbohydrates | 30 grams |
| Fat | 9 grams |
Cod is a lean source of protein, so this soup feels filling without being heavy.
What to Serve With Fish Soup
I like keeping the sides simple so the soup stays the star.
- Crusty bread or garlic toast for dunking
- A crisp green salad with lemon vinaigrette
- Steamed rice if you want an extra hearty bowl
- A chilled glass of dry white wine for the adults
Leftovers and Storage Tips
Fish soup is best the day you make it, but leftovers can still be good if you handle them right.
- Refrigerator: Cool the soup, then store it in an airtight container for up to 3 days.
- Freezer: The broth freezes well for up to 3 months. The fish and potatoes can turn softer after thawing, so freezing the base without the fish is the better move.
- Reheating: Warm it slowly on the stove over low heat. Skip the microwave on high, since it overcooks fish fast.
FAQs Related to Fish Soup
1. What is the best fish to use for fish soup?
Firm white fish like cod, haddock, and halibut work best. They keep their shape in hot broth and have a mild flavor that soaks up the tomato base.
2. Can I use frozen fish?
Yes. Thaw it fully in the fridge first, then pat it very dry. Excess water makes the soup taste diluted.
3. How long does fish take to cook in soup?
About 5 to 6 minutes at a gentle simmer. The chunks should look opaque and flake easily with a fork.
4. How do I keep the fish from falling apart?
Use firm fish, cut it into larger chunks, and avoid stirring after it goes in. A gentle simmer matters too.
5. Can I make fish soup without tomatoes?
You can. Skip the tomatoes and tomato paste, use a little extra stock, and finish with cream or coconut milk for a lighter, white style broth.
6. Is fish soup healthy?
It can be. This version is high in protein and loaded with vegetables, and it is fairly low in fat. Watch the sodium if you use regular store bought stock.
7. Can I add shrimp or other seafood?
Absolutely. Shrimp cooks in about 3 minutes, so add it after the fish has been simmering for a couple of minutes.
Conclusion
This fish soup is proof that a cozy dinner does not need a long ingredient list or a long afternoon. One pot, simple ingredients, and a gentle hand with the fish is really all it takes.
Make it this week while the evenings are getting cooler. Pull out that big pot, grab some good bread, and see how fast the bowls empty.
If you try it, leave a comment below and tell me how it turned out. Did you stick with cod or try something new? I read every single one, and questions are always welcome.