Spanish Fish Soup with Saffron, Tomato & Potatoes Recipe

Updated November 4, 2026

Total time
1 hr 5 min
prep 25 min · cook 40 min
Serves
6
portions as written
Safe temperature (USDA)
145°F / 63°C
check the thickest piece

Jump to recipe

Spanish Fish Soup with Saffron, Tomato & Potatoes Recipe

Spanish fish soup is a coastal-style bowl of flaky white fish, potatoes, and vegetables simmered in a savory broth scented with paprika and saffron. Versions vary across Spain and from household to household; this practical version builds its flavor with a simple tomato-and-onion base and is served hot with bread.

Ingredients

  • 2 tablespoons (30 ml) extra-virgin olive oil
  • 1 medium yellow onion, finely chopped (about 1 cup / 150 g)
  • 1 medium red bell pepper, seeded and finely chopped (about 1 cup / 150 g)
  • 4 garlic cloves, minced (about 4 teaspoons / 12 g)
  • 1 can diced tomatoes with their juices (14.5 ounces / 411 g)
  • 1 teaspoon sweet paprika (2 g)
  • ¼ teaspoon saffron threads (about 0.1 g), lightly crumbled
  • 6 cups (1.4 L) fish stock, preferably low-sodium
  • 1 bay leaf
  • 1 pound (450 g) waxy potatoes, such as Yukon Gold, peeled and cut into ¾-inch (2 cm) chunks
  • 1 teaspoon fine salt (6 g), plus more to taste
  • ¼ teaspoon freshly ground black pepper (0.5 g), plus more to taste
  • 1½ pounds (680 g) skinless cod or other firm white fish, cut into 1½-inch (4 cm) chunks
  • ⅓ cup chopped flat-leaf parsley (about 10 g)
  • 1 tablespoon fresh lemon juice (15 ml), plus lemon wedges for serving
  • 6 slices crusty bread, about ½ inch (1 cm) thick (optional)

Instructions

  1. Prepare the ingredients. Chop the onion and pepper, mince the garlic, and cut the potatoes and fish into similar-sized pieces so they cook evenly. Keep the fish refrigerated while you prepare the soup. If your stock is salted, plan to add less salt at first and adjust near the end.
  2. Soften the vegetables. Warm the olive oil in a large, heavy-bottomed pot or Dutch oven over medium heat. Add the onion and bell pepper and cook for about 5 minutes, stirring occasionally, until softened but not browned. Stir in the garlic and cook for 1 minute. Lower the heat if the garlic starts to take on color; browned garlic can make the broth taste bitter.
  3. Build the tomato base. Add the diced tomatoes and their juices, paprika, saffron, salt, and pepper. Stir and cook for 5 minutes, allowing some of the tomato liquid to evaporate and the spices to become fragrant. The mixture should look thick and glossy rather than dry. If it begins sticking, stir in a splash of stock.
  4. Add the stock and potatoes. Pour in the fish stock and add the bay leaf and potato chunks. Bring the pot to a gentle boil, which usually takes about 3 minutes, then lower the heat so the broth simmers steadily. Cook for 18 minutes, stirring once or twice, until the potatoes are nearly tender when pierced with a knife. Keep the simmer gentle so the potatoes hold their shape and the broth does not reduce too quickly.
  5. Add the fish. Taste the broth and adjust the salt if needed. Lower the fish pieces into the soup, spacing them around the pot, and gently nudge them under the liquid. Simmer for about 6 minutes, without vigorous stirring, until the pieces turn opaque and flake easily. Check the center of the thickest piece with a food thermometer; USDA FSIS guidance sets the safe minimum internal temperature for fish at 145°F (63°C). If a piece is not there yet, simmer briefly and check again.
  6. Finish the soup. Remove the bay leaf. Stir in the chopped parsley and lemon juice, taking care not to break up the fish. Taste once more and add a little salt, pepper, or lemon as needed. If the soup has thickened more than you like, loosen it with a small splash of hot stock or water.
  7. Toast the bread, if using. While the potatoes simmer, toast the bread in a dry skillet or toaster until crisp at the edges. You can rub a cut garlic clove over the warm slices for extra aroma, but this is optional. Keep the toast separate until serving so it does not soak up all the broth in the pot.
  8. Serve hot. Ladle broth, potatoes, and fish into warm bowls, making sure each serving gets a good mix. Add a lemon wedge and parsley if desired, and serve the toasted bread alongside.

Tips

  • Choose a fish that holds together. Cod is mild and widely available, while haddock, pollock, halibut, or hake can also work. Avoid very thin fillets that may fall apart before the potatoes are ready. If using frozen fish, thaw it in the refrigerator and pat it dry before cutting it into chunks.
  • Use saffron thoughtfully. A small pinch gives the broth a gentle floral aroma and golden color. Saffron can be expensive or hard to find; leave it out if needed, or add a tiny pinch of turmeric for color. Turmeric will not reproduce saffron’s distinctive flavor, so treat it as a visual substitute, not an exact match.
  • Keep the broth at a simmer. A rolling boil can break delicate fish into flakes and make potatoes scrape against one another. Add the fish only when the potatoes are almost tender, then stir as little as possible. Cutting the fish into even chunks also helps it finish at the same time.
  • Adjust salt for your stock. Fish stock varies in saltiness, and a reduced-sodium stock gives you more control. Start with the listed amount, taste before adding the fish, and make the final adjustment after the lemon and parsley go in.

Serving Suggestions

Serve this soup as a light main course with crusty bread for dipping. Toasted bread is especially useful for catching the saffron-and-tomato broth, but plain bread works well too. For a fuller meal, add a simple green salad dressed with olive oil and vinegar, or offer steamed green beans on the side. A small dish of chopped parsley and lemon wedges lets everyone brighten their own bowl.

For a relaxed dinner, bring the pot to the table and ladle the soup into warm bowls just before eating. Keep the bread separate until serving; adding it directly to the pot makes the leftovers very thick. If you want a more substantial first course, serve smaller portions before a vegetable dish or rice. The soup is filling enough to be the centerpiece without needing several elaborate sides.

Variations

Make it without saffron: Simply omit it and let the tomato, paprika, and fish stock carry the flavor. A tiny pinch of turmeric can add golden color, though it tastes different. Smoked paprika can replace some or all of the sweet paprika for a deeper, smoky broth; use it sparingly so it does not overpower the fish.

Change the fish: Use a mix of two firm white fish for contrasting textures, keeping the total amount at 1½ pounds (680 g). Pieces of salmon also work, though they make the soup richer and give it a stronger flavor. Add similarly sized chunks at the same point in the method and cook them to the fish safety temperature.

Add shellfish: For a mixed seafood version, replace about ½ pound (225 g) of the white fish with peeled raw shrimp. Add the shrimp during the final few minutes and cook until opaque and firm; avoid simmering them for a long time, which can make them rubbery. Keep the total seafood amount close to the recipe quantity so the broth remains balanced.

Make it more vegetable-forward: Add a small chopped fennel bulb with the onion and pepper for a mild anise note, or stir in a handful of peas near the end. You can also replace one potato with a chopped carrot, though it will add a touch of sweetness. For a less traditional but hearty variation, add drained white beans; they make the soup thicker and more filling.

Storage and Reheating

Refrigerate leftover soup within 2 hours of cooking in a covered, shallow container. It keeps for 3–4 days in the refrigerator. The fish will become a little firmer after chilling, and the potatoes may absorb broth, so store bread separately and expect to add a splash of stock or water when reheating.

Warm leftovers gently in a covered saucepan over medium-low heat, stirring carefully so the fish does not break up. Bring the soup to 165°F (74°C), checking with a food thermometer, as recommended for reheated leftovers. You can also reheat an individual portion in the microwave, stirring partway through and checking the temperature in more than one spot. Avoid boiling the soup hard; it can make the fish dry and the potatoes fall apart.

For longer storage, freeze the soup in airtight freezer-safe containers for up to 2 months for best quality. Potatoes can become softer after freezing and thawing, and fish texture may change slightly. Thaw it overnight in the refrigerator, then reheat to 165°F (74°C). Do not leave the soup at room temperature for extended storage.

Frequently Asked Questions

What fish is best for Spanish fish soup?
Choose a firm, mild white fish such as cod, haddock, pollock, hake, or halibut. Cod is an easy-to-find option, but the exact fish can vary with availability. Cut it into even chunks and add it near the end of cooking so it stays tender.

Can I use water instead of fish stock?
Yes, but the broth will taste less savory and less distinctly fish-forward. Use a good-quality vegetable stock if fish stock is unavailable, or use water and add a little extra salt only after tasting. Avoid adding too much seasoning early, since packaged stock can already be salty.

Can I make the soup ahead?
You can prepare the tomato-and-potato broth a day ahead, cool it promptly, and refrigerate it. Reheat the broth until steaming and the potatoes are hot, then add the fish and cook it just before serving to preserve its texture. If the potatoes have absorbed liquid, loosen the broth with a little stock.

How can I tell when the fish is cooked?
The flesh should turn opaque and separate into flakes, and the thickest piece should reach 145°F (63°C) on a food thermometer. Color and flaking are useful visual clues, but checking temperature is the reliable safety step. Insert the thermometer from the side into the center of a large chunk.

Why did my fish break apart in the soup?
It may have been cut too small, stirred too often, or cooked at a vigorous boil. Use larger, evenly cut pieces, wait until the potatoes are nearly tender before adding them, and keep the liquid at a gentle simmer. If some fish does flake, the soup will still taste good; simply ladle it carefully.

Is this soup spicy?
No. Sweet paprika adds warmth and color rather than chili heat, and saffron is aromatic rather than hot. For a spicier bowl, add a pinch of red pepper flakes with the paprika, or put them on the table so each person can season their own serving.

Related

More recipes to cook

Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes

Spotted an error? Tell us and we will correct it (corrections policy).