Quick Recipe Version (TL;DR)
Quick Ingredients
- 4 firm white fish fillets (about 6 oz each; cod, halibut, or snapper)
- 1 tsp kosher salt, plus more to taste
- 1/2 tsp black pepper
- 2 tbsp olive oil
- 1 medium yellow onion, thinly sliced
- 1 jalapeño, thinly sliced (seeded for less heat)
- 4 garlic cloves, minced
- 1 (28 oz) can crushed tomatoes
- 1/2 cup low-sodium chicken or vegetable broth
- 1/4 cup dry white wine (or use more broth)
- 2 tsp dried oregano (Mexican oregano preferred)
- 1 bay leaf
- 1/2 cup green olives, pitted and sliced
- 2 tbsp capers, drained
- 1 tbsp unsalted butter (optional, for a silkier sauce)
- 1/3 cup chopped fresh cilantro
- 1 lime (zest optional, plus wedges or juice to finish)
Do This
- 1) Heat oven to 375°F (190°C). Season fish with 3/4 tsp salt and 1/2 tsp pepper.
- 2) Sauté onion and jalapeño in olive oil 5 minutes; add garlic 30 seconds.
- 3) Stir in crushed tomatoes, broth, wine, oregano, and bay leaf; simmer 8–10 minutes.
- 4) Stir in olives and capers; taste and adjust salt.
- 5) Add fish to a baking dish, pour sauce over, and bake 15–18 minutes (until fish flakes and reaches 135–140°F).
- 6) Finish with butter (optional), cilantro, and lime juice/wedges. Serve hot.
Why You’ll Love This Recipe
- Big flavor, minimal effort: A vibrant tomato sauce does most of the work.
- Perfect balance: Briny olives and capers + bright lime + gentle heat from jalapeño.
- Weeknight friendly: Bakes quickly and doesn’t require fancy equipment.
- Great for entertaining: Looks impressive, but it’s straightforward and forgiving.
Grocery List
- Produce: 1 medium yellow onion, 1 jalapeño, 4 garlic cloves, 1 lime, 1 small bunch cilantro
- Dairy: Unsalted butter (optional)
- Pantry: Olive oil, kosher salt, black pepper, dried oregano (Mexican oregano if possible), 1 bay leaf, 1 (28 oz) can crushed tomatoes, low-sodium broth, dry white wine (optional), green olives, capers
Full Ingredients
Fish
- 4 firm white fish fillets (about 6 oz / 170 g each; cod, halibut, grouper, or red snapper; about 1 inch thick)
- 3/4 tsp kosher salt (for seasoning fish)
- 1/2 tsp black pepper
Veracruzana Tomato Sauce
- 2 tbsp olive oil
- 1 medium yellow onion, halved and thinly sliced (about 2 cups)
- 1 jalapeño, thinly sliced into rounds (seeded for mild, leave seeds for more heat)
- 4 garlic cloves, minced
- 1 (28 oz / 794 g) can crushed tomatoes
- 1/2 cup low-sodium chicken or vegetable broth
- 1/4 cup dry white wine (optional; substitute with additional broth)
- 2 tsp dried oregano (Mexican oregano preferred)
- 1 bay leaf
- 1/2 cup green olives, pitted and sliced (about 75 g)
- 2 tbsp capers, drained
- 1/4 tsp kosher salt (to start, then adjust to taste)
To Finish and Serve
- 1 tbsp unsalted butter (optional, stirred in at the end for a silkier sauce)
- 1/3 cup chopped fresh cilantro (loosely packed)
- 1 lime (cut into wedges; optional: zest 1/2 lime for extra brightness)
- Optional for serving: cooked white rice, warm corn tortillas, or crusty bread

Step-by-Step Instructions
Step 1: Prep the oven, pan, and fish
Arrange a rack in the middle of the oven and preheat to 375°F (190°C).
Pat the fish fillets dry with paper towels (this helps the fish bake up tender instead of watery). Season both sides with 3/4 tsp kosher salt and 1/2 tsp black pepper. Set aside while you make the sauce.
Step 2: Sauté the aromatics
Heat 2 tbsp olive oil in a large skillet over medium heat. Add the sliced onion and jalapeño and cook, stirring occasionally, until the onion is softened and starting to turn translucent, about 5 minutes.
Add the minced garlic and cook until fragrant, about 30 seconds. Keep the heat moderate so the garlic doesn’t brown.
Step 3: Build and simmer the tomato base
Carefully stir in the crushed tomatoes, 1/2 cup broth, and 1/4 cup white wine (or additional broth). Add the 2 tsp oregano, bay leaf, and 1/4 tsp salt.
Bring the sauce to a gentle simmer, then reduce heat to medium-low. Simmer uncovered until slightly thickened and the flavors start to meld, about 8–10 minutes. Stir occasionally to prevent sticking.
Step 4: Add the briny ingredients and taste
Stir in the green olives and capers. Simmer 2 minutes more.
Remove and discard the bay leaf. Taste the sauce and adjust seasoning if needed. Because olives and capers are salty, you may not need much additional salt.
Step 5: Assemble in a baking dish
Pour about 1/3 of the sauce into the bottom of a 9 x 13-inch baking dish (or another dish large enough to fit the fish in a single layer).
Nestle the seasoned fish fillets into the sauce. Spoon the remaining sauce over the fish, making sure some onions, olives, and capers land on top of each fillet.
Step 6: Bake until the fish is just done
Bake uncovered at 375°F (190°C) until the fish flakes easily with a fork and the thickest part reaches 135–140°F (57–60°C), about 15–18 minutes (timing depends on thickness).
If you don’t have a thermometer, gently press the top of a fillet with a fork. It should separate into moist flakes without looking raw or translucent in the center.
Step 7: Finish with cilantro and lime, then serve
If using, stir 1 tbsp butter into the hot sauce in the baking dish for a slightly richer, silkier finish.
Sprinkle with chopped cilantro and finish with lime juice to taste (start with 1–2 tsp, then add more if you like). Serve right away with extra lime wedges on the side.
This is excellent over rice, tucked into warm tortillas, or served with crusty bread to scoop up the sauce.
Pro Tips
- Choose the right fish: Firm white fish (cod, halibut, grouper, snapper) holds together in the sauce. Very delicate fish can break apart.
- Don’t overbake: Fish goes from perfect to dry quickly. Pull it around 135–140°F; it will continue to gently rise in temperature as it rests.
- Control the heat: For mild, remove jalapeño seeds and ribs. For more heat, keep some seeds or add an extra jalapeño.
- Balance the sauce: If your tomatoes taste very acidic, stir in the optional butter at the end and/or add 1/4 tsp sugar (optional) to round it out.
- Make the sauce work for you: Simmer longer (an extra 5–10 minutes) if you prefer a thicker sauce before baking.
Variations
- Spicier Veracruzana: Add 1/2 tsp crushed red pepper or 1 chipotle in adobo (minced) to the sauce while it simmers.
- Seafood mix: Use a combination of fish plus 8 oz peeled shrimp. Add shrimp during the last 6–8 minutes of baking so they don’t overcook.
- No wine version: Replace the 1/4 cup wine with 1/4 cup additional broth plus 1 tsp white vinegar or extra lime at the end for brightness.
Storage & Make-Ahead
Store leftovers in an airtight container in the refrigerator for up to 3 days. Reheat gently to avoid drying out the fish: cover and warm in a 300°F (150°C) oven for 10–15 minutes, or simmer very gently on the stovetop over low heat just until warmed through.
Make-ahead tip: The sauce can be made up to 3 days ahead and refrigerated. When ready to cook, warm the sauce in a skillet, assemble with the fish, and bake as directed.
Freezing: For best texture, freeze the sauce only (up to 2 months). Thaw overnight in the fridge and reheat before baking with fresh fish.
Nutrition (per serving)
Approximate, based on 6 oz cod per serving and including sauce: 320 calories, 36 g protein, 14 g fat, 12 g carbohydrates, 4 g fiber, 780 mg sodium.
