Sopa de Pescado en Leche: Creamy Fish Soup Recipe

Updated November 6, 2026

Total time
55 min
prep 20 min · cook 35 min
Serves
4
portions as written

Jump to recipe

Sopa de Pescado en Leche: Creamy Fish Soup Recipe

Sopa de pescado en leche is a comforting, creamy fish soup from the coastal regions of Spain, where fresh fish and milk come together in a surprisingly light, savory broth. The milk mellows the fish’s brininess while the garlic, saffron, and parsley keep the soup savory and aromatic. It’s an easy, one-pot meal that feels both rustic and elegant, perfect for a weeknight dinner or a special lunch.

Ingredients

  • 1 lb (450 g) firm white fish fillets (such as cod, hake, or halibut), skin removed
  • 4 cups (960 ml) whole milk
  • 2 cups (480 ml) fish stock (or water)
  • 1 medium onion, finely chopped (about 1 cup / 150 g)
  • 3 cloves garlic, minced
  • 1 large potato, peeled and cut into 1/2-inch cubes (about 1.5 cups / 225 g)
  • 1/4 cup (60 ml) olive oil
  • 1/4 teaspoon saffron threads (optional)
  • 1 bay leaf
  • 1 teaspoon sweet paprika
  • Salt and freshly ground black pepper, to taste
  • 2 tablespoons fresh parsley, chopped, for garnish

Instructions

  1. Pat the fish fillets dry and season both sides with salt and pepper. Cut into 2-inch chunks and set aside.
  2. In a large pot or Dutch oven, heat the olive oil over medium heat. Add the onion and cook, stirring occasionally, until soft and translucent, about 5 minutes. Add the garlic and cook for 1 minute more, until fragrant.
  3. Stir in the paprika and saffron (if using), then add the potato cubes and bay leaf. Pour in the fish stock and bring to a gentle simmer. Cook for 10 minutes, until the potatoes are just tender.
  4. Pour in the milk and bring the soup back to a gentle simmer (do not boil vigorously, or the milk may curdle). Season with salt and pepper to taste.
  5. Add the fish chunks to the pot. Simmer gently for 5–7 minutes, until the fish is opaque and flakes easily with a fork. Check the internal temperature with a food thermometer—it should read 145°F (63°C), the USDA FSIS safe minimum for fish.
  6. Remove the bay leaf. Taste and adjust seasoning. Ladle the soup into bowls and garnish with fresh parsley. Serve hot.

Tips

  • Prevent curdling: Keep the soup at a gentle simmer, not a rolling boil, after adding the milk. If you want extra insurance, you can temper the milk by adding a ladleful of hot broth to the milk before pouring it into the pot.
  • Fish choice: Use a firm, mild white fish like cod, hake, or halibut. Avoid oily fish like salmon or mackerel, as they will overpower the delicate milk broth. If using frozen fish, thaw it completely in the refrigerator and pat dry before cooking.
  • Substitutions: For a richer soup, use half-and-half instead of whole milk. If you don’t have fish stock, you can use water with a pinch of sea salt, or a mild vegetable broth—the soup will be slightly less savory but still delicious.
  • Common mistake: Don’t cook the fish from the start—add it at the end so it stays tender and doesn’t become rubbery. Overcooking is the most common error; the fish should just flake, not fall apart.

Serving Suggestions

Serve this soup with crusty bread or garlic toast for dipping. A simple green salad with a lemon vinaigrette balances the richness. For a more substantial meal, you can add a handful of cooked rice or small pasta (like orzo) to the soup in the last 5 minutes of cooking.

Variations

  • Add shellfish: Add a handful of cleaned mussels or clams along with the fish; discard any that don’t open after cooking.
  • Vegetable boost: Stir in a cup of frozen peas or green beans with the fish for extra color and nutrition.
  • Spicy kick: Add a pinch of red pepper flakes or a small diced chili with the garlic for a subtle heat.
  • Herb twist: Replace the parsley with fresh dill or tarragon for a different aromatic profile.

Storage and Reheating

Refrigerate leftovers in an airtight container within 2 hours of cooking. The soup will keep for up to 3 days. Reheat gently on the stovetop over low heat, stirring often, until just heated through—do not boil. The soup may thicken slightly; add a splash of milk or water to loosen it. Freezing is not recommended, as the milk-based broth can separate and the potatoes become grainy.

Frequently Asked Questions

Can I use any type of fish? Yes, but firm white fish work best. Fatty fish like salmon can overpower the delicate milk broth. If you use a delicate fish like sole, reduce the cooking time to 3–4 minutes.

Why did my soup curdle? Curdling happens when the milk is heated too quickly or at too high a temperature. Keep the heat low and stir occasionally. Also, acidic ingredients like lemon can cause curdling, so avoid adding them directly to the soup.

Can I make this soup dairy-free? Yes, you can substitute the whole milk with unsweetened almond milk or oat milk, but the flavor and creaminess will change. Use a barista-style plant milk for a richer texture, and be aware that it may curdle more easily.

Can I use frozen fish? Absolutely. Thaw the fish in the refrigerator overnight, then pat it dry before adding to the soup. Frozen fish often releases more water, so you may need to simmer a little longer to thicken the broth.

How do I know when the fish is done? The fish should be opaque and flake easily with a fork. For accuracy, use a food thermometer—the internal temperature should reach 145°F (63°C).

Can I add rice or pasta to this soup? Yes, add 1/2 cup of cooked rice or small pasta (like orzo) in the last 5 minutes of cooking. This makes the soup more filling and turns it into a complete meal.

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).