Easy Fish Soup That Stays Tender, Not Mushy

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.

  1. Pick firm white fish. Cod, haddock, and halibut hold their shape in hot broth. Delicate fish like sole tends to fall apart.
  2. Pat the fish dry before seasoning. It helps the salt stick and keeps the broth from turning cloudy.
  3. Turn the heat down before the fish goes in. A gentle simmer with tiny bubbles is what you want, not a rolling boil.
  4. Do not stir after adding the fish. Just nudge the pot gently. Stirring breaks the chunks apart fast.
  5. Add lemon at the very end. Cooking it too long dulls the bright flavor.

How to Make Fish Soup Step by Step

Easy Fish Soup That Stays Tender, Not Mushy
Easy Fish Soup That Stays Tender, Not Mushy

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.