This traditional Portuguese fish soup is both hearty and aromatic, combining tender white fish with potatoes, tomatoes, and a rich saffron-kissed broth. Often served with crusty bread and a drizzle of olive oil, it’s a perfect example of rustic European coastal cooking that feels both comforting and refined.
Yields4 ServingsPrep Time15 minsCook Time40 minsTotal Time55 mins
For the soup
750gwhite fish fillets (such as cod, haddock, or monkfish), skinless and boneless
3tbspolive oil
1onion, finely chopped
2clovesgarlic, minced
1leek, sliced thinly (white and light green parts)
2medium tomatoes, peeled and chopped
2medium potatoes, peeled and diced
1tspsweet paprika
1pinchsaffron threads (optional but traditional)
1bay leaf
6cupsfish stock (or water + fish bouillon)
Salt and freshly ground black pepper, to taste
Fresh parsley, chopped, for garnish
Lemon wedges, for serving
Rustic crusty bread, to accompany
Prepare the base
1
In a large pot, heat olive oil over medium heat. Add chopped onion, garlic, and leek. Sauté gently for 5–6 minutes until translucent and aromatic.
Add the body
2
Stir in chopped tomatoes and paprika. Cook until tomatoes break down (about 5 minutes). Add potatoes, bay leaf, and saffron (if using).
Simmer with stock
3
Pour in the fish stock and bring to a boil. Reduce heat and simmer for 15–20 minutes, or until the potatoes are tender.
Add the fish
4
Cut the fish into large chunks. Gently add them to the soup. Simmer for 7–10 minutes until just cooked through — the fish should be opaque and flaky but not falling apart.
Season & serve
5
Remove bay leaf. Taste and adjust salt and pepper. Ladle into bowls, garnish with chopped parsley, and serve with lemon wedges and crusty bread on the side.
Pairing Suggestions
6
Wine: A chilled Vinho Verde or light-bodied Portuguese white like Arinto or Alvarinho.
Bread: Rustic broa (Portuguese cornbread) or grilled garlic toast.
Ingredients
For the soup
750gwhite fish fillets (such as cod, haddock, or monkfish), skinless and boneless
3tbspolive oil
1onion, finely chopped
2clovesgarlic, minced
1leek, sliced thinly (white and light green parts)
2medium tomatoes, peeled and chopped
2medium potatoes, peeled and diced
1tspsweet paprika
1pinchsaffron threads (optional but traditional)
1bay leaf
6cupsfish stock (or water + fish bouillon)
Salt and freshly ground black pepper, to taste
Fresh parsley, chopped, for garnish
Lemon wedges, for serving
Rustic crusty bread, to accompany
Directions
Prepare the base
1
In a large pot, heat olive oil over medium heat. Add chopped onion, garlic, and leek. Sauté gently for 5–6 minutes until translucent and aromatic.
Add the body
2
Stir in chopped tomatoes and paprika. Cook until tomatoes break down (about 5 minutes). Add potatoes, bay leaf, and saffron (if using).
Simmer with stock
3
Pour in the fish stock and bring to a boil. Reduce heat and simmer for 15–20 minutes, or until the potatoes are tender.
Add the fish
4
Cut the fish into large chunks. Gently add them to the soup. Simmer for 7–10 minutes until just cooked through — the fish should be opaque and flaky but not falling apart.
Season & serve
5
Remove bay leaf. Taste and adjust salt and pepper. Ladle into bowls, garnish with chopped parsley, and serve with lemon wedges and crusty bread on the side.
Pairing Suggestions
6
Wine: A chilled Vinho Verde or light-bodied Portuguese white like Arinto or Alvarinho.
Bread: Rustic broa (Portuguese cornbread) or grilled garlic toast.