Fish in Veracruz Sauce is a delicious 30-minute, one-pan dish featuring white fish fillets simmered in a zesty tomato sauce flavored with capers, olives, and onions. It’s so simple and delicious that you’ll rush to add it to your weekly dinner rotation!

I first tried Veracruz-style fish, pescado a la Veracruzana, at a restaurant in Cancun, and I was hooked (pardon the pun). And because dining out equals research and development for me, I came home ready to recreate a paleo, Whole30 and keto version of this classic Mexican seafood dish with easy-to-find pantry staples. It took me a while to perfect this dish, but my version of Fish in Veracruz Sauce can be on the table in less than 30 minutes!
Table of Contents
What is Veracruz sauce?
Veracruz sauce is a tomato-based sauce from the region in the Gulf Coast of Mexico that features tomatoes, capers, olives, oregano and bay leaves. If you’re thinking that this sauce is reminiscent of a Mediterranean dish, you aren’t wrong—these are definitely classic Mediterranean ingredients! The Port of Veracruz is one of the oldest in Mexico and many regional Veracruz dishes—like this sauce—incorporate Mediterranean components that were originally brought over by Spaniards.
This sauce is super flavorful but it isn’t supposed to be spicy, so it’s perfect for folks who can’t handle the heat. And because I love shortcuts to deliciousness, my version utilizes canned fire roasted diced tomatoes to add a smoky depth to the sauce without adding extra prep time!

Feel free to change up the protein!
Although this dish is traditionally cooked with whole fish or fish fillets (e.g., red snapper, tilapia, cod, sea bass, etc.), you can definitely substitute a different protein. Some tasty swaps include shrimp, scallops, and boneless and skinless chicken breast or thighs. Simply season the protein with salt and pepper before simmering in the sauce until cooked through!

Ingredients

- Boneless, skinless white fish fillets: Although this dish is typically made with whole red snapper, I like to use boneless and skinless white fish fillets to make a fast and simple weeknight dish. Chilean sea bass, cod, tilapia, and halibut are great choices—just make sure they’re all the same thickness to ensure even cooking.
- Fire-roasted diced canned tomatoes: I love the ease that comes with dumping in a whole can of fire-roasted diced canned tomatoes—no cutting, roasting or draining necessary!
- Extra virgin olive oil
- Yellow onion: The thinner you cut the onions, the faster they’ll soften in the skillet!
- Anaheim pepper: I add diced Anaheim pepper for flavor rather than heat—this dish isn’t traditionally spicy so an Anaheim pepper, which is just a touch spicier than a bell pepper, is perfect.
- Garlic cloves
- Green olives: I love using pitted Castelvetrano olives because they’re nice and buttery.
- Capers: Add a delightful tang and acidity that complements the fish.
- Dried oregano
- Dried bay leaf
- Diamond Crystal kosher salt
- Freshly ground black pepper
- Fresh cilantro
- Lime
How to make fish in Veracruz sauce
Heat a large skillet over medium heat. Once the pan is hot, add the oil.

Toss in the onion and sprinkle on some salt. Cook until softened, about 8 to 10 minutes.

Stir in the peppers and garlic. Cook until fragrant, about 30 seconds.

Add the canned tomatoes, green olives, capers, dried oregano and bay leaf.

Bring the sauce to a boil and decrease the heat to maintain a simmer.

Taste the sauce and season with salt and pepper if needed.

Pat the fish filets dry with a paper towel and sprinkle both sides with salt and pepper.

Nestle the fish filets into the sauce and place some of the sauce on top of each filet.

Cover the skillet and cook on low heat for about 10 minutes or until fish is opaque and cooked through, about 140°F on an instant-read thermometer.

Sprinkle on some fresh cilantro…

…and serve the fish with lime wedges so you can squeeze on some fresh lime juice before taking a bite.

To keep this paleo, Whole30, and keto, you can serve this dish with cauliflower rice in lieu of white rice. It also tastes great served with my Instant Pot Crispy Potatoes!
Other Paleo Seafood Dishes
- Hash Brown Fish (page 150 in Nom Nom Paleo: Let’s Go!)
- Ginger Scallion Fish Fillets (page 156 in Nom Nom Paleo: Let’s Go!)
- Umami Fried Shrimp (page 164 in Nom Nom Paleo: Let’s Go!)
- Lobster Tails with Thai Red Curry Sauce (page 170 in Nom Nom Paleo: Let’s Go!)
- Air Fryer Fish Sticks
- Fried Calamari
- Shrimp and Avocado Salad
- Paleo Walnut Shrimp
Looking for more recipe ideas? Head on over to my Recipe Index. You’ll also find exclusive recipes in my cookbooks, Nom Nom Paleo: Food for Humans (Andrews McMeel Publishing 2013), Ready or Not! (Andrews McMeel Publishing 2017), and Nom Nom Paleo: Let’s Go! (Andrews McMeel Publishing 2022).
PRINTER-FRIENDLY RECIPE CARD
Fish in Veracruz Sauce (Paleo, Keto, Whole30, Gluten Free)

Ingredients
- 2 tablespoons extra virgin olive oil
- 1 medium yellow onion halved and thinly sliced
- Diamond Crystal kosher salt
- 1 Anaheim pepper seeded and finely diced
- 3 garlic cloves minced
- 14.5 ounce canned fire roasted diced tomatoes
- ½ cup green olives pitted and cut in half
- 1 tablespoon drained capers
- ½ teaspoon dried oregano
- 1 dried bay leaf
- freshly ground black pepper
- 4 white fish filets (skinless and boneless) about 6 ounces each and 1-inch thick (sea bass, red snapper, halibut, cod, or tilapia)
- ¼ cup minced fresh cilantro
- 1 lime cut into wedges
Instructions
- Heat a large skillet over medium heat and add the oil when the pan is hot.
- Toss in the onion and sprinkle on some salt and cook until softened, about 8 to 10 minutes.
- Stir in the chopped pepper and garlic. Cook until fragrant, about 30 seconds.
- Add the tomatoes, green olives, capers, dried oregano, and bay leaf.
- Bring the sauce to a boil and decrease the heat to maintain a simmer. Taste the sauce and season with salt and pepper if needed.
- Pat the fish filets dry with a paper towel and sprinkle both sides with salt and pepper.
- Nestle the fish filets into the sauce and place some of the sauce on top of each one. Cover the skillet and cook on low heat for about 10 minutes or until fish is opaque and cooked through, about 140°F on an instant-read thermometer.
- Sprinkle on some fresh cilantro and serve the fish with lime wedges so you can squeeze on some fresh lime juice on before taking a bite.
Video
Notes
Nutrition
Nutrition information is automatically calculated, so should only be used as an approximation.
Really good and easy.
My husband and I love this recipe! It’s very easy and comes out perfect every time, great way to get more fish in our diet.
I’ve added it to my regular rotation.
We are not fish people but have been trying to add fish for health reasons. This recipe is perfect for people who who don’t want that fishy taste. After many fails we were glad to find one we enjoyed.
Delicious, and you can pick and choose the variety peppers you use to alter heat and flavor to your liking. Sometimes I throw in a handful of shrimp, or chop up some green onion with the cilantro to use as garnish.
It was very tasty, and will make it again! I didn’t have an Anaheim pepper so I used 3/4 of a poblano and it was great. 👍
If I use chicken should I cook it first, then remove and make the sauce and put the chicken back in?
Yes! You can sear the chicken first and then simmer it in the sauce.
This was really delicious. I did use fresh tomatoes and a little white wine for extra liquid mainly because my garden is producing and I need to use them.
Great recipe! I fixed it using tilapia and the flavors melded exponentially. I grabbed a hatch chili instead of Anaheim, but as soon as I cut into it to chop it, my eyes started to water. Cutting down on the amount was an easy solution. This recipe will be on our regular rotation from now on. “pezcado a la veracruzano” at our house.
this is so delicious and easy and quick. I get requests for it!
Excellent, I made it with whole Branzino. Anaheim was very mild (nice flavor but zero spice), next time I’ll try a pepper with more heat. Can’t wait to try it again with a different fish.