If you’ve never made a Mexican fish soup recipe at home, you’re in for a real treat. Known in Spanish as Caldo de Pescado, this beloved dish is a cornerstone of Mexican home cooking — a hearty, soul-warming bowl built on a smoky, tomato-chile broth packed with tender white fish, vibrant vegetables, and bright lime.
It’s the kind of soup that fills your kitchen with an incredible aroma and disappears from the pot faster than you’d expect.
What makes this version so special is the combination of guajillo and chipotle chiles. Together, they create that signature depth you find in authentic Mexican cooking — earthy, smoky warmth with just a subtle nudge of heat. The chiles get blended into a sauce that forms the backbone of the entire dish, so the flavor runs all the way through.
This isn’t your average fish soup. Every spoonful delivers layered flavor from the charred tomatoes, the soft carrots and potatoes, and the chunks of flaky white fish — all finished with a squeeze of fresh lime and a handful of cilantro.
Ready in about 45 minutes, it’s approachable enough for a weeknight but impressive enough to serve at a casual dinner gathering. Once you make it, it absolutely earns a permanent spot in your recipe rotation.
For another comforting Mexican classic, you’ll also love this Caldo de Pollo — a simple, nourishing chicken broth soup that’s just as easy to love.
Why You’ll Love This Mexican Fish Soup Recipe
This soup genuinely checks every box you could want from a weeknight dinner.
It’s fast, flavorful, and made with simple, wholesome ingredients you can find at most grocery stores.
- Deep, authentic flavor: The guajillo-chipotle tomato base gives the broth a complexity that tastes like it simmered for hours — even though it didn’t.
- Wholesome and nutritious: Loaded with lean protein from the fish and fiber from the vegetables, it’s a naturally light but satisfying meal.
- One pot, minimal cleanup: Everything cooks in a single large pot, which means less time doing dishes and more time enjoying dinner.
- Customizable heat level: Mild enough for the whole family as written, with easy ways to dial up the spice for heat lovers.
- Budget-friendly: White fish like tilapia and cod are affordable, and the rest of the ingredients are pantry and produce staples.
- Great for Lent and meatless Fridays: This is a traditional Lenten dish in Mexico, and it delivers so much flavor that nobody misses the meat.
Read Also: Red Pozole Recipe
Ingredients
Building the perfect caldo de pescado starts with quality ingredients. A firm white fish is non-negotiable here — delicate fish like sole or flounder will fall apart during cooking, while firm varieties like cod, tilapia, snapper, or halibut hold their shape and absorb the smoky broth beautifully.
- 1.5 lbs (680g) firm white fish fillets (cod, tilapia, snapper, or halibut), cut into 2-inch (5cm) chunks
- 3 medium 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)
- 1 medium white onion, diced
- 4 garlic cloves, minced
- 2 medium carrots, peeled and sliced into rounds
- 2 medium Yukon Gold potatoes, peeled and cut into 1-inch (2.5cm) cubes
- 1 medium zucchini, sliced into half-moons
- 2 tablespoons olive oil
- 8 cups (2 liters) fish stock or chicken broth (low sodium)
- 1 bay leaf
- 1 teaspoon Mexican oregano
- 1/2 teaspoon ground cumin
- Salt and black pepper, to taste
- 1/2 cup (15g) fresh cilantro, roughly chopped
- 2 limes — 1 juiced for the broth, 1 cut into wedges for serving
- Corn tortillas, for serving
Read Also: Thai Fish Soup Recipe
Kitchen Equipment Needed
Having the right tools makes the process smooth and simple. A blender is essential here for pureeing the tomato-chile base into that silky, deep-red sauce — it’s the step that makes all the difference between a flat broth and a deeply flavored one.
- 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
You might also enjoy: Caribbean Fish Soup
Recommended Products for This Recipe
These are personally recommended products that will make a real difference in both the cooking process and the final result.
1. Dried Guajillo Chiles (Whole, Bulk Pack)
Guajillo chiles are the heart of this soup’s smoky, slightly fruity broth. Using whole dried chiles and rehydrating them yourself delivers significantly more flavor than powders or pastes. Look for chiles that are pliable and fragrant — rigid, dry chiles have lost much of their essential oils.
2. Lodge Enameled Cast Iron Dutch Oven
A heavy-bottomed Dutch oven distributes heat evenly and allows you to build a rich broth without hot spots that can scorch your base. The enameled interior won’t react with the acidic tomatoes, keeping your broth tasting clean and bright. It also goes beautifully from stovetop to table.
3. Vitamix Blender
Pureeing the tomato-chile base completely smooth is what gives caldo de pescado that restaurant-quality finish. A high-powered blender like the Vitamix pulverizes the chiles and tomatoes into a seamless, velvety sauce that integrates fully into the broth.
4. Fish Stock (Gluten-Free, Low Sodium)
A good quality fish stock deepens the seafood flavor of the broth in a way that chicken broth simply can’t replicate. Look for a low-sodium version so you can control the seasoning yourself. Fish stock can be hard to find locally, making it a great item to stock up on online.
5. Mexican Oregano (Dried)
Mexican oregano is a completely different plant from Italian oregano — it’s more floral, citrusy, and earthy, and it’s the secret background note that makes authentic Mexican soups taste unmistakably “right.” Don’t substitute Italian oregano; if you can’t find Mexican, simply leave it out.
This soup pairs beautifully with a bowl of Seafood Stew for a true feast of the sea.
Step-by-Step Instructions
Step 1: Prepare and Rehydrate the Dried Chiles
- Remove the stems and seeds from both guajillo chiles. Removing the seeds reduces the heat while keeping all of the smoky, fruity flavor.
- Place the cleaned chiles in a small saucepan and cover with water (about 2 cups/480ml).
- Bring to a gentle boil over medium heat, then reduce to a simmer for 10 minutes, until the chiles are soft and pliable.
- Remove the chiles from the water and set aside. Discard the soaking water, as it can be bitter.
- Allow the chiles to cool slightly before blending.
Step 2: Make the Tomato-Chile Sauce Base
- Place the quartered Roma tomatoes, rehydrated guajillo chiles, and 1-2 chipotle peppers (with a small spoonful of their adobo sauce) into your blender.
- Add 1/2 cup (120ml) of your fish stock or broth to help the blender move smoothly.
- Blend on high speed for 45-60 seconds until completely smooth and glossy red. The sauce should have the consistency of a smooth tomato puree.
- Place a fine mesh strainer over a bowl and strain the sauce through it, pressing with a spoon to extract all the liquid. Discard the solids left in the strainer. This step ensures a silky-smooth broth.
- Set the strained sauce aside.
Step 3: Prepare All Vegetables and Fish
- Dice the white onion into 1/2-inch (1.25cm) pieces and mince the garlic cloves finely.
- Peel the carrots and slice into 1/4-inch (6mm) rounds.
- Peel the Yukon Gold potatoes and cut into 1-inch (2.5cm) cubes, keeping them uniform so they cook evenly.
- Slice the zucchini in half lengthwise, then cut into 1/2-inch (1.25cm) half-moons.
- Pat the fish fillets dry with paper towels — this helps them hold together in the broth. Cut into generous 2-inch (5cm) chunks.
- Season the fish pieces lightly with salt and black pepper on all sides and set aside.
Step 4: Build the Soup Base
- Heat 2 tablespoons (30ml) of olive oil in your large pot or Dutch oven over medium-high heat.
- Once the oil is hot and shimmering, add the diced onion. Cook, stirring occasionally, for 4-5 minutes until the onion is softened and just starting to turn translucent.
- Add the minced garlic and cook for 1 minute more, stirring constantly so the garlic doesn’t burn. It should smell fragrant and golden.
- Add the ground cumin and Mexican oregano directly to the onion and garlic in the pot. Stir for 30 seconds to toast the spices in the oil — this blooms their flavor and makes the whole broth taste more aromatic.
Step 5: Add the Tomato-Chile Sauce
- Pour the strained tomato-chile sauce directly into the pot with the sauteed onion and garlic. It will sizzle dramatically — this is normal and good!
- Stir everything together and cook the sauce over medium-high heat for 3-4 minutes, stirring frequently, until it darkens slightly and becomes fragrant. This step is called “frying the sauce” and it concentrates the flavor and removes the raw taste.
Step 6: Add the Broth and Vegetables
- Pour in the remaining 8 cups (2 liters) of fish stock or broth and stir to combine everything into the pot.
- Drop in the bay leaf.
- Add the cubed potatoes and sliced carrots to the pot. These vegetables take the longest to cook, so they go in first.
- Bring the soup to a boil over high heat, then reduce the heat to medium-low. Cover the pot partially with a lid and let it simmer for 12-15 minutes, until the potatoes are just barely fork-tender but not falling apart.
- Taste the broth and adjust salt and pepper at this stage — it should taste well-seasoned and slightly rich.
Step 7: Add the Zucchini
- Add the sliced zucchini to the pot and stir gently.
- Zucchini cooks quickly, so simmer for just 3-4 minutes until it is tender but still has a slight bite. Overcooking zucchini makes it mushy and waterlogged.
Step 8: Gently Add the Fish
- Carefully place the seasoned fish chunks into the simmering broth. Do not stir aggressively after adding the fish, as it can break apart.
- Reduce the heat to low and gently simmer for 5-7 minutes, until the fish is fully opaque and flakes easily when tested with a fork. It should be cooked through but still in recognizable chunks.
- Squeeze the juice of 1 lime directly into the pot and stir gently. The lime juice brightens the entire dish and brings all the flavors into focus.
- Remove and discard the bay leaf.
Step 9: Finish with Cilantro and Serve
- Scatter the roughly chopped fresh cilantro over the top of the soup and give it a very gentle stir.
- Taste one final time and adjust salt and lime if needed.
- Ladle the soup into deep bowls, making sure each bowl gets a good portion of fish, vegetables, and broth.
- Serve immediately with lime wedges on the side and warm corn tortillas for dipping.
Another great Mexican-inspired dish to try is this Caldo de Res — a hearty beef bone broth soup that’s equally comforting on a cool evening.
Tips for Success
Small technique choices make a big difference with this soup. Paying attention to when you add the fish — and not rushing it — is the single most important tip for a restaurant-quality result.
- Don’t skip straining the sauce. Running the blended tomato-chile sauce through a fine mesh strainer gives the broth a silky, clean texture. Without this step, you’ll have a slightly grainy, uneven consistency.
- Use firm white fish only. Delicate fish like sole, flounder, or salmon will fall apart and turn mushy. Cod, tilapia, snapper, and halibut all hold beautifully in the broth.
- Add the fish last. Fish cooks very quickly. Adding it too early results in tough, overcooked pieces. Five to seven minutes of gentle simmering is all it needs.
- Toast the spices before adding liquid. Blooming cumin and Mexican oregano in the hot oil before the sauce and broth go in dramatically deepens their flavor.
- Fry the sauce before adding broth. Cooking the blended tomato-chile paste in the pot for a few minutes removes rawness and adds a roasted, concentrated depth you can’t get any other way.
- Always 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.
For a similarly bold, tomato-based broth experience, try this Chicken Tortilla Soup — a fan-favorite that uses many of the same flavor techniques.
Serving Suggestions

Caldo de Pescado is a complete, satisfying meal on its own, but a few simple accompaniments take it from great to unforgettable.
- Warm corn tortillas are the traditional companion — perfect for tearing and dipping directly into the smoky broth.
- Lime wedges served alongside so everyone can squeeze as much or as little as they like.
- Sliced serrano or jalapeño chiles on the side for anyone who wants extra heat without altering the base soup.
- Freshly made Pico de Gallo — a bright, chunky salsa that adds fresh tomato and chile flavor to each bite.
- Warm, fluffy white rice served on the side or stirred directly into the bowl for extra heartiness.
- Easy Guacamole as a side dip with tortilla chips for a full spread.
- Mexican Street Corn as a vibrant, flavorful side that complements the smoky broth perfectly.
Variations to Try
Once you’ve mastered the base recipe, this soup is very easy to customize. The tomato-chile broth is incredibly versatile and pairs well with many types of seafood and vegetables.
- Add shrimp: Toss in 1/2 lb (225g) of peeled and deveined shrimp during the last 3 minutes of cooking for a mixed seafood caldo.
- Use fish heads for deeper flavor: If you have access to fish heads and bones, simmer them in water for 30 minutes first to make a deeply flavored homemade fish stock before proceeding with the recipe.
- Add corn: Slice 2 ears of corn into 3-inch (7.5cm) rounds and add them with the potatoes and carrots for a sweet, hearty addition.
- Make it spicier: Keep some of the guajillo chile seeds in the blender or add a dried chile de arbol to the sauce blend for serious heat.
- Add cabbage: Shredded green cabbage added in the last 5 minutes of cooking is a traditional variation that adds texture and mild sweetness.
- Try different vegetables: Chayote squash, chili peppers, green beans, or spinach all work beautifully in the broth.
Read Also: Mediterranean Fish Soup Recipe
Storage and Reheating
This soup tastes phenomenal fresh, but it does store and reheat well with a few important tips. The key to great leftovers is keeping the fish separate from the broth when possible.
- Refrigerator: Store the soup in an airtight container in the refrigerator for up to 3 days. The flavors actually deepen and improve overnight.
- Freezer: Freeze the broth and vegetables (without the fish) for up to 3 months. Add freshly cooked fish when you reheat for the best texture.
- Reheating: Warm leftovers gently on the stovetop over medium-low heat, stirring occasionally, until heated through. Avoid boiling, as this can make the fish tough and rubbery.
- Do not microwave: Microwaving fish in soup makes it rubbery and unpleasant. The stovetop is always the best method.
- Add fresh lime and cilantro when reheating: A fresh squeeze of lime and a sprinkle of cilantro when serving leftovers brings the flavors back to life.
For another nourishing seafood option, try this Fish Chowder Recipe — a creamy, comforting bowl that’s perfect for chilly days.
Nutritional Facts
Per serving (based on 6 servings). Approximate values.
| Nutrient | Amount |
|---|---|
| Calories | 285 kcal |
| Protein | 32g |
| Total Fat | 8g |
| Saturated Fat | 1.5g |
| Carbohydrates | 22g |
| Fiber | 4g |
| Sugar | 5g |
| Sodium | 580mg |
| Cholesterol | 65mg |
| Vitamin A | 4,200 IU |
| Vitamin C | 28mg |
| Calcium | 70mg |
| Iron | 2.5mg |
| Omega-3 Fatty Acids | ~1,100mg |
Note: Nutritional values are estimates and will vary based on specific ingredients and portion sizes used.
This soup is naturally low in calories, high in lean protein, and a solid source of fiber, making it a nutritional powerhouse for a complete meal.
You might also enjoy this rich and luxurious Lobster Bisque for a special occasion seafood dinner.
Health Benefits of Key Ingredients
This Mexican fish soup isn’t just delicious — every major ingredient brings real nutritional value to your bowl.
White fish like cod, tilapia, and snapper are some of the leanest animal proteins available, providing all essential amino acids with very little saturated fat. They’re also excellent sources of Omega-3 fatty acids, which support heart health, brain function, and reduce inflammation throughout the body.
- Guajillo chiles are rich in vitamin A, vitamin C, and antioxidants called carotenoids that support immune function and eye health. They also contain capsaicin, which has been shown to support healthy metabolism.
- Tomatoes are one of the best dietary sources of lycopene, a powerful antioxidant associated with reduced risk of heart disease and certain cancers. Cooking tomatoes actually increases their lycopene availability.
- Carrots are loaded with beta-carotene, which the body converts to vitamin A. They also provide fiber, potassium, and vitamin K.
- Garlic has well-documented anti-inflammatory and antimicrobial properties, and regular consumption is associated with improved cardiovascular health.
- Zucchini is a low-calorie vegetable that provides vitamin C, potassium, and manganese, and it adds bulk and texture without adding many calories.
- Lime juice provides vitamin C and helps the body absorb non-heme iron from the fish and vegetables more efficiently.
- Cilantro is a source of vitamins K and A, and contains compounds that may support healthy blood sugar levels.
Read Also: Chinese Fish Soup Recipe
Frequently Asked Questions
1. What is the best fish to use for Mexican fish soup?
Firm white fish works best for caldo de pescado. Top choices include cod, tilapia, snapper, halibut, catfish, and grouper. These fish hold their shape in the simmering broth and absorb the flavors without falling apart. Avoid oily or delicate fish like salmon, tuna, sole, or flounder, as they will either disintegrate or overpower the subtle chile broth with their stronger flavor.
2. Can I use frozen fish for this recipe?
Absolutely. Frozen white fish works very well in this soup. Thaw it overnight in the refrigerator or under cold running water before using. Pat it completely dry with paper towels before adding it to the broth to prevent excess water from diluting the flavors. If adding from frozen directly, increase the fish cooking time by 3-4 minutes.
3. Is this soup very spicy?
As written, this recipe is mild to medium in heat — the guajillo chile provides smokiness and depth rather than burn, and a single chipotle pepper adds gentle warmth. For a completely mild version, use just half a chipotle and remove all seeds from the guajillo. For more heat, add a second chipotle, keep some guajillo seeds, or add a dried chile de arbol to the blended sauce.
4. Can I make this soup ahead of time?
Yes, with a small adjustment. Make the entire soup up to the point of adding the fish, then store the broth and vegetables in the refrigerator for up to 2 days. When ready to serve, bring the broth back to a gentle simmer and add the fresh fish pieces at that time. This ensures the fish is perfectly cooked and not overdone from sitting in the broth for extended periods.
5. What can I substitute for fish stock?
Chicken broth is the most common substitute and works very well — it provides a rich, savory base without an overpowering flavor. You can also use vegetable broth for a Lenten or pescatarian version with no meat products at all. Clam juice mixed with water (half and half) is another excellent option that stays true to the seafood character of the dish. Avoid beef broth, as it will completely change the flavor profile.
Read Also: Tom Yum Soup Recipe
Final Thoughts
This Mexican fish soup recipe is the kind of dish that reminds you why simple, well-made food is always the most satisfying.
The smoky tomato-chile broth, the tender white fish, the bright burst of lime — every element works together to create something that feels genuinely nourishing and deeply flavorful.
It’s a recipe rooted in real Mexican home cooking tradition, and once you understand the core technique of building that blended chile sauce, you’ll find yourself turning to it again and again.
ive it a try this week — you might just find your new favorite weeknight soup. If you make it, drop a comment below and let us know how it turned out. Did you add shrimp? Try a different fish? We’d love to hear your spin on it!
Recommended:
- Caldo de Res
- Chicken Pozole
- Green Pozole
- Seafood Chowder
- Baked Cod
- Vegetable Soup
- Birria Tacos
- Enchilada Sauce
- Corn Soup
- Baked Salmon



