JOIN! 12 Weeks for $1

Chili and Citrus–Marinated Fish Tacos

4 to 6 Servings

1 hour plus marinating

Made This Recipe? Write a Review.
Thank you for submitting your review! A member of our team is confirming the review meets our site's Community Guidelines. It will be posted on the site shortly.

At Casa Jacaranda cooking school in Mexico City, Jorge Fritz and Beto Estúa showed us how to make delicious fish tacos that were not only quick and easy to pull together, but also a feast for the eyes. Snapper, marinated in a blend of citrus juice, guajillo chilies, aromatics and achiote paste, was quickly sautéed before being tucked into tortillas and garnished with a savory-sweet pineapple-based salsa and fresh cilantro, delivering a profusion of flavors in each bite. We adapted their recipe, opting instead to broil the marinated fish, as we found that the intense heat produces delicious charring with minimal fuss and cleanup. For the salsa, we hewed closely to theirs, but added habanero chili for a touch of fruity heat that complements the pineapple (we added habanero to the fish marinade, too). Brick-red annatto paste, made with annatto seeds (also called achiote seeds) plus spices and seasonings, is typically sold in small bricks. Look for it in the international aisle of well-stocked supermarkets, in Latin American grocery stores or online. If you don’t have achiote paste, a good substitute can be made by stirring together 1½ tablespoons sweet paprika, ½ teaspoon ground cumin, ¼ teaspoon granulated garlic, ¼ teaspoon dried oregano, 1/8 teaspoon kosher salt and 1 tablespoon white vinegar to form a stiff paste. Use in place of the paste called for in the recipe.

4 to 6



Don’t use an aluminum baking pan or a vessel made of a “reactive” metal for marinating the fish. Rather, use a glass or ceramic pie plate or a wide, shallow stainless steel bowl to ensure the marinade’s acidity does not react with the material and cause “off” flavors. The acidity also impacts the texture of the fish, so don’t marinate the fillets for longer than a couple hours.

1 hour

plus marinating


  • ¾

    ounce guajillo chilies (4 medium), stemmed and seeded

  • 1

    medium white onion, ½ roughly chopped, ½ finely chopped


Pardon the interruption

You need to be a Milk Street Digital Member to see the full recipe


and get access to all of our recipes and articles online, as well as in print.

How we use your email.

Your email address is required to identify your subscription. We will use it for customer service as well as other communications from Milk Street. We will not share, or rent your email address.

Caroline C.
January 23, 2023
I made these tacos with orange roughy since that is what was available and substituted serrano peppers instead of habeneros based on the previous review. I salted the fish before I applied the marinade as well. They were delicious.
Diana L.
April 5, 2023
It was good but so hot
I skipped the habanero because I know its really hot but put guajillo. It came out so hot. Burning your throat. So next time, I will only use 1 of them. I bought rockfish fillet. I ended up marinating my fish in the sauce for only 15 min. It was plenty of time. My family really liked it but asked that it is not so hot next time I make it. One family member asked to add some lime at the end.
Kathryn M.
June 22, 2022
Achiote or Annatto?
In the ingredients list, you call out achiote paste. In the recipe, you refer to annatto paste. Which one should be used?
Jason N.
July 20, 2022
There's no way to reply to a review
This is not a review, I'm simply writing to tell Kathryn M that Achiote and Annatto are the same thing....
Janine W.

This looks really delicious and want to make this. But, I really don't care for pineapple :( Would mango be a fair substitute?

Lynn C.

Hi Janine -

We haven't tested this with mango, but we think it should work fine. Good luck!

The Milk Street Team

Rusty F.

The recipe looked delicious but the habanero made it beyond hot. It was basically inedible. All of the flavor was overwhelmed by heat. The pineapple salsa was very good. We may try it again using serranos or jalapeños to tame the heat.

John M.

This was among the best fish tacos that I've ever eaten, and most certainly was the best I've ever made. Using mahi-mahi filets, I made this almost exactly as written. The exception being substituting serrano peppers for habañero with the marinade and the salsa (hat tip to commenter above). Still gave the dish a real nice bite! This recipe is a keeper. Many thanks to Calvin Cox, Jorge Fritz & Beto Estúa, and the Milk Street team again.