Go Back
Mexican Fish Soup Recipe

Mexican Fish Soup

Steven
Known as Caldo de Pescado, this beloved Mexican soup features tender white fish in a smoky, tomato-chile broth with vegetables. The combination of guajillo and chipotle chiles creates signature depth — earthy, smoky warmth with subtle heat — while fresh lime and cilantro brighten each bowl.
Prep Time 15 minutes
Cook Time 30 minutes
Total Time 45 minutes
Course Main Course, Soup
Cuisine Mexican
Servings 6 servings
Calories 285 kcal

Equipment

  • Large pot or Dutch oven - At least 6-quart / 5.7-liter capacity
  • Blender - Or immersion blender
  • Fine-mesh strainer
  • Sharp chef's knife
  • Cutting board
  • Ladle
  • Measuring cups and spoons
  • Wooden spoon or silicone spatula
  • Small saucepan - For rehydrating chiles

Ingredients
  

  • 1.5 lbs firm white fish fillets - 680g (cod, tilapia, snapper, or halibut), cut into 2-inch / 5cm chunks
  • 3 Roma tomatoes - quartered
  • 2 dried guajillo chiles - stems and seeds removed
  • 1-2 chipotle peppers in adobo sauce - use 1 for mild, 2 for more heat; with a small spoonful of adobo sauce
  • 1 medium white onion - diced into 1/2-inch / 1.25cm pieces
  • 4 garlic cloves - minced
  • 2 medium carrots - peeled and sliced into 1/4-inch / 6mm rounds
  • 2 Yukon Gold potatoes - peeled and cut into 1-inch / 2.5cm cubes
  • 1 medium zucchini - sliced into 1/2-inch / 1.25cm half-moons
  • 2 tablespoons olive oil - 30ml
  • 8 cups fish stock or chicken broth - 2 liters, low sodium
  • 1 bay leaf
  • 1 teaspoon Mexican oregano - dried
  • 0.5 teaspoon ground cumin
  • salt and black pepper - to taste
  • 0.5 cup fresh cilantro - 15g, roughly chopped
  • 2 limes - 1 juiced for the broth, 1 cut into wedges for serving
  • corn tortillas - for serving

Instructions
 

  • Remove stems and seeds from guajillo chiles. Cover with water in a small saucepan, bring to a gentle boil, then simmer for 10 minutes until soft and pliable. Remove chiles and discard soaking water.
  • Place quartered tomatoes, rehydrated guajillo chiles, chipotle peppers with adobo sauce, and 1/2 cup (120ml) of stock into a blender. Blend on high speed until smooth and glossy. Strain through a fine mesh strainer and set aside.
  • Dice onion, mince garlic, slice carrots, cube potatoes, and cut zucchini into half-moons. Pat fish dry, season with salt and pepper, and cut into 2-inch chunks.
  • Heat olive oil in a large pot over medium-high heat. Add onion and cook 4-5 minutes until translucent. Add garlic and cook 1 minute. Add cumin and Mexican oregano, toast for 30 seconds.
  • Pour in strained tomato-chile sauce and cook over medium-high heat for 3-4 minutes, stirring frequently, until it darkens and becomes fragrant.
  • Add remaining 8 cups (2 liters) of stock, bay leaf, cubed potatoes, and sliced carrots. Bring to a boil, then reduce heat to medium-low, cover partially, and simmer for 12-15 minutes until potatoes are just fork-tender. Season with salt and pepper.
  • Add sliced zucchini and simmer for 3-4 minutes until tender but still has a slight bite.
  • Gently place seasoned fish chunks into the simmering broth. Reduce heat to low and simmer for 5-7 minutes until fish is opaque and flakes easily. Squeeze in juice of 1 lime, stir gently, and discard bay leaf.
  • Scatter chopped cilantro over the top and gently stir. Ladle into bowls and serve with lime wedges and warm corn tortillas on the side.

Notes

  • Don't skip straining: Running the blended tomato-chile sauce through a fine mesh strainer gives the broth a silky, clean texture. Without this step, the broth will have a slightly grainy consistency.
  • Choose the right fish: Use firm white fish like cod, tilapia, snapper, or halibut. Delicate fish like sole or flounder will fall apart and turn mushy in the broth.
  • Add fish last: Fish cooks very quickly. Adding it too early results in tough, overcooked pieces. 5-7 minutes of gentle simmering is all it needs.
  • Toast the spices: Blooming cumin and Mexican oregano in hot oil before adding liquid dramatically deepens their flavor. Don't skip this step.
  • Fry the sauce: Cooking the blended tomato-chile paste in the pot for a few minutes removes rawness and adds a roasted, concentrated depth.
  • Finish with lime: The lime juice at the end isn't just garnish — it balances the richness of the broth and makes all the other flavors pop.
  • Make ahead: Prepare the broth and vegetables up to the point of adding the fish, then refrigerate for up to 2 days. When ready to serve, bring to a simmer and add fresh fish.
  • Storage: Store in an airtight container in the refrigerator for up to 3 days. The flavors deepen overnight. Freeze broth and vegetables (without fish) for up to 3 months.
  • Reheating: Warm gently on the stovetop over medium-low heat. Avoid boiling, as this makes the fish tough. Do not microwave — it makes fish rubbery.
Keyword caldo de pescado, fish soup recipe, mexican fish soup, mexican seafood soup