This Mexican Fish Soup, called Caldo de Pescado in Spanish, is a nod to a few childhood soups and stews that I remember my mother making. Fish and shrimp cook in a tomato-chili broth that's smoky and flavorful with a hint of spice. Best of all, this soup is ready in 30 minutes, making it a fantastic dinner option any night of the week.

Growing up in a Mexican-American Catholic household, Fridays during Lent were always known as Fish Fridays. Abstaining from meat on these days, my mom would rotate through fish sticks, soups, grilled cheese, and grilled fish dishes.
As a result, I have an appreciation for this season and now incorporate these same traditions with my own familia. We mix up meals like one pot pasta with vegetables and this bean and cranberry soup to keep our Friday night dinners meat-free during Lent.
Not Your Average Fish Soup
- Flavorful But Simple: You get big flavor with dried chilies and a handful of pantry staples.
- Customizable: Add seasonal veggies, adjust the spiciness, or try it with different seafood to make a Mexican fish soup you and your family love.
- Quick and Easy: This soup requires minimal prep and is ready less than a half an hour. Try this 30-minute lamb ragu recipe for another easy weeknight dinner.
Caldo de Pescado Ingredients
This Mexican soup recipe is so comforting, and the flavors are both bright and warming with just a hint of spice. Like a roasted tomato soup, this Mexican fish stew is great any of year when the weather is crisp and a chill in the air leaves us craving a comforting soup. Here is what you’ll need to make this flavorful soup:

- Dried Chiles: We’re using a mix of dried guajillo and dried ancho chiles to give the tomato sauce broth a smoky warmth and subtle hint of spice. When it comes to buying dried chilies, I love the brand Olé Rico.
- Assorted Vegetables: Carrots, celery, onion, and potatoes add a little heft and make great staples for the soup. You can also add in some sliced squash or zucchini, depending on the time of year.
- Canned Whole Peeled Tomatoes: I always keep canned tomatoes on hand to make sauces from scratch. For this recipe, they create the tomato base when blended with dried chiles. It doesn’t matter if they’re whole, peeled, or diced, since everything gets puréed.
- Fish and Shrimp: It wouldn’t be a Mexican Fish Soup without fish. You can use any firm white fish you've got, including cod, tilapia, sea bass, or halibut. I am using wild-caught cod and also adding some delicious wild-caught pink shrimp to give a bit more texture and variety to our Mexican fish and shrimp soup.
- Fish Stock or Fish Broth: Your best option is to purchase some fresh stock from your local fishmonger. It's easy and very fresh, but if that's not an option, in the words of Ina Garten, “store bought is fine.” When it comes to store-bought, I really like this Imagine Seafood Stock. While you can use vegetable stock instead, the fish stock really elevates the flavor of the fish soup.
- Spices and Seasonings: Dried Mexican oregano, black peppercorns, garlic, and kosher salt are helpful seasoning ingredients for this soup.
How to Make Mexican Fish Soup
The best part of this dish is that it’s ready in 30 minutes.
- Step 1: Soak the chilies. Pour boiling water over the dried chilies in a prep bowl. Allow the chiles to soak and soften. This usually takes about 10 minutes. Once they're softened, drain the water, and remove the stem and seeds.
- Step 2: Make the tomato sauce. Place the tomatoes, chopped onion, garlic cloves, and the soaked chiles in a food processor. Season with a pinch of kosher salt and black peppercorns. Purée until smooth, then set up a mesh strainer over a medium bowl and strain the tomato sauce to remove any solids from the sauce.
- Step 3: Saute the vegetables. Cook the carrots and celery in a large Dutch oven with olive oil over medium heat. Season with a large pinch of kosher salt, ground cumin, and ground black pepper, and cook until softened and translucent.
- Step 4: Add ingredients and simmer. Add the potatoes, puréed tomato sauce, fish stock, dried bay leaf, and a tablespoon of dried Mexican oregano. Stir everything to combine and bring to a boil. Reduce heat to a simmer and cook until the vegetables are fork-tender.
- Step 5: Prep the fish and cook. Slice the fish fillets into 1-inch chunks and add them along with the shrimp to the pot of soup. Continue to simmer for 5 to 10 minutes more until the fish is tender and the shrimp has just turned pink. Taste and adjust seasoning as desired.
- Step 6: Serve. Ladle soup into bowls and garnish with fresh cilantro leaves, lime wedges for squeezing lime juice, and, if desired, a few dashes of your favorite hot sauce.

Expert Tips
- Use the Right Fish: Use any white fish you have on hand, but make sure it's a firm white fish that doesn’t fall apart in the soup.
- Add the Fish Last: It's important to add the shrimp and fish right at the end of cooking, and remove it from the heat as soon as they're done cooking.
- Make it Spicy: Add a few sprinkles of hot sauce, add a chile de arbol, or leave a few seeds from the chilies in the tomato sauce to add a bit more spice or heat.
- Smokier Flavor: You will get a nice smoky flavor from the dried chiles, but you can amp this up a bit with smoked paprika to keep the heat level the same or add a chipotle in adobo sauce, which will add smoky flavors with a bit of spice.
- Make it Yours: Add some extra veggies (zucchini works great), swap the fish for all shrimp, or add different types of seafood you like. Just make sure to adjust the cooking time for the different types of seafood to avoid overcooking.
Serving Suggestions
- Keep things simple with some lime and chopped cilantro, but you can also add a sprinkle of cotija cheese or some crispy tortilla strips on top.
- Pair it with simple sides like fresh corn tortillas or even saltine crackers. You can even add a scoop of rice to the soup if you want to bulk it up. Add the rice when serving rather than to the entire pot of soup.
- Enjoy it as a balanced meal with charred corn salad and pineapple coconut popsicles for dessert.
Storage Tips
- Leftovers: Store leftover Mexican fish soup in the refrigerator for up to 3-4 days. Technically, you can also freeze it for up to a month but the texture of the fish and seafood may change when it thaws out.
- Reheating: For the best results, reheat your leftovers in a saucepan on the stove. Avoid using the microwave as this method easily overcooks the fish, making it rubbery and tough.
Recipe FAQs
It's super easy and a great option if you have a bit of extra time for preparation. To start, visit your local fish market or fishmonger and purchase a couple of pounds of fish heads. Another option is red snapper or cod, but I find fish heads make a more flavorful broth.
To cook, place the fish heads in a large pot and add 8 to 10 cups of water. Bring to a boil over medium-high heat and add in a few aromatics and seasonings. I like to add in some sliced onion, fennel, a teaspoon of whole black peppercorns, and a few bay leaves. You can also add in a couple of carrots and celery to the mix. Allow the broth to simmer for about an hour. Cool and use a slotted spoon to strain out the fish heads, vegetables, and seasonings, which you can discard. Pour out the stock into a large bowl fitted with a mesh strainer to strain out any remaining bits from the broth. And there it is! Fresh fish broth to use for your soup.
You want a firm white fish that doesn't fall apart during cooking. Think cod, halibut, snapper, or tilapia. Avoid delicate fish like sole or flounder, which can break down too quickly.
No, not really. Having children in the house, I like to keep the heat on the milder end and serve hot sauce at the table for the adults to add to the soup as desired. If you're looking for a bit more heat, you can keep some of the seeds from the chiles, add chile de arbol to the mixture, or sprinkle in some dashes of hot sauce.
More Mexican Recipes to Try
There are lots more recipes to try when it comes to Cooking with Our CSA and finding seasonal recipes in the Mexican cuisine space is a joy to share with you here. Here are few other recipes to check out:
If you make this, please let me know how it went in the comments or tag me on social media! Tag me on Instagram or on my Facebook page. Cheers to the next nourishing meal. 🧡

Mexican Fish Soup (Caldo de Pescado)
Ingredients
- 4 fillets of cod about 1.25 pounds cut into chunks
- 12 ounces uncooked shrimp option for peeled and deveined or keep whole shell on
- 2 russet potatoes, peeled and diced into ½ inch chunks
- 2 medium carrots, peeled and diced into ½ inch chunks
- 3 celery stalks, diced into ½ inch chunks
- 6 cloves garlic, peeled
- 1 dried ancho chile
- 2 dried guajillo chiles
- 1 28- ounce can whole peeled tomatoes
- 4 cups fish stock
- ½ red onion, chopped
- ½ teaspoon black peppercorns
- 4 tablespoons olive oil
- 1 tablespoon dried Mexican oregano
- 1 dried bay leaf
- 2 teaspoons kosher salt plus more to taste
Instructions
- Bring a cup of water to boil in a small saucepan. Cool slightly. Place dried chiles in a small prep bowl and pour the boiled water over them. Allow chiles to soak and soften, about 10 minutes. Remove from water and remove the stem and seeds (you can leave in a few seeds for added spice or heat as desired).
- In the bowl of a food processor, add tomatoes, chopped onion, garlic cloves, and the soaked chiles. Season with a pinch of kosher salt and black peppercorns. Pulse the mixture to create a tomato sauce. Purée until smooth.
- Using a medium bowl fitted with a mesh strainer, strain the tomato sauce until smooth. Discard the remaining purée. Set to the side until ready for use.
- In a large dutch oven, heat 4 tablespoons of olive oil over medium heat. Add carrots and celery and season with a large pinch of kosher salt and ground black pepper. Cook until softened and translucent, about 3 to 5 minutes.
- Add in potatoes, the puréed tomato sauce, fish stock, the dried bay leaf, and 1 tablespoon dried Mexican oregano. Stir everything to combine then bring to a boil. Reduce heat to a simmer to allow the potatoes, carrots, and celery to cook for about 15 minutes until the vegetables are fork tender.
- Once vegetables are cooked through, remove the bay leaf and discard. Add in the diced fish chunks and shrimp. Continue to simmer for 5 to 10 minutes more until fish is tender and shrimp has just turned pink. Taste and adjust seasoning as desired.
- Ladle soup into bowls. Garnish with cilantro leaves, a wedge of lime, and, if desired, a few dashes of your favorite hot sauce. Serve with a warm pile of fresh tortillas.
Notes
- Add a Garnish: Choose from chopped cilantro, lime or lemon juice, hot sauce, or salsa.
- Choose Firm White Fish: Cod, snapper, halibut, or tilapia work well. Avoid delicate fish that can fall apart in the broth.
- Adjust the Heat: For more spice, add a chile de árbol, leave in some chile seeds, or splash in your favorite hot sauce.
- Boost the Smokiness: Smoked paprika or chipotle in adobo adds extra smoky depth.









Linda Santander says
Was the best recipe so far. Full of flavor and easy to make. Thank you.
Frances Kellar says
So happy you enjoyed this recipe. Thank you for sharing your feedback, Linda!