1) Soften the chiles
If you have not already, remove the stems and seeds from the dried chiles. Bring a small saucepan of water to a simmer. Add the guajillo and ancho chiles and simmer for 5 to 7 minutes until pliable. Turn off the heat and let them sit another 5 minutes. Reserve about 1/2 cup of the soaking liquid, then drain.
2) Blend the marinade
In a blender, add softened chiles, pineapple, onion, garlic, vinegar, oil, achiote (if using), brown sugar, salt, cumin, oregano, smoked paprika, cinnamon, and 1/2 cup warm water or soaking liquid. Blend until very smooth. If it is too thick to blend, add 1 to 2 tablespoons more liquid.
Taste it. You are looking for smoky, tangy, lightly sweet, and well salted. Add a pinch more salt if it tastes flat.
Optional: If you want it ultra smooth, strain the marinade through a fine mesh sieve. Not required, but it makes the sauce extra silky.
3) Marinate the chicken
Add chicken to a bowl or zip-top bag and pour in the marinade. Toss until fully coated. Marinate for 30 minutes (good) up to 12 hours (great) in the refrigerator. If you are using fresh pineapple, aim for the shorter end for the best texture.
4) Cook it (choose your method)
Sheet pan method (easy)
Heat oven to 450°F. Line a rimmed sheet pan with foil or parchment and lightly oil it. Spread chicken in an even layer, leaving space for browning (do not overcrowd). Scatter the extra pineapple chunks around the chicken.
Roast for 14 to 18 minutes, tossing or flipping once halfway, until the chicken reaches 165°F. For crisp edges, broil for 1 to 3 minutes at the end, watching closely.
Skillet method (maximum char)
Heat 1 tablespoon oil in a large skillet over medium-high heat. Add chicken in a single layer. Cook 3 to 4 minutes without moving it so it can brown, then stir and continue cooking until done, about 6 to 8 minutes total depending on size.
Push chicken to one side and sear pineapple chunks in the same pan for 1 to 2 minutes until caramelized. Toss everything together.
5) Serve
Warm tortillas directly over a burner flame or in a dry skillet. Pile on chicken, add onion and cilantro, and finish with a big squeeze of lime. If you want to be extra, spoon a tiny bit of the pan juices over the top.
6) Optional quick sauce rescue
If the finished chicken tastes a little intense or dry, stir in 1 to 2 tablespoons water and a squeeze of lime in the pan over low heat. It loosens everything up and brings the brightness back.
Achiote note: If you cannot find achiote paste, skip it. You will lose a little of the classic earthy color, but the flavor will still be great. A small pinch of annatto (if you have it) or an extra 1/2 teaspoon smoked paprika can help with color.