Last Updated on August 18, 2025 by Casia Valdés
Few side dishes capture the essence of Mexican comfort food quite like Frijoles Charros, also known as Mexican Charro Beans. This hearty, brothy bean dish is loaded with smoky bacon, fire-roasted tomatoes, and a kick of fresh chiles. Traditionally served alongside grilled meats, these beans are a staple at cookouts, fiestas, and Sunday family lunches.
The name “charro” comes from the traditional Mexican horsemen—charros—who would often prepare this dish out in the open air during long days of ranch work. It’s rustic, filling, and made with ingredients that were easy to find and cook in one pot. Today, it’s beloved not only for its deep, smoky flavor but also for its versatility—you can enjoy it as a side dish, a soup, or even a main course with a stack of warm tortillas.
The magic of Frijoles Charros lies in their layers of flavor: creamy pinto beans, salty-crisp bacon, tangy fire-roasted tomatoes, and the bright freshness of cilantro. And while this recipe stays true to tradition, it’s also easy to make in your own kitchen with just a few pantry staples and fresh ingredients.
Table of Contents
Why You’ll Love This Recipe
-
Bold, Smoky Flavor: Bacon, fire-roasted tomatoes, and chiles create a deep, satisfying taste.
-
Versatile Dish: Works as a side, main, or even a hearty soup.
-
Meal Prep Friendly: Tastes even better the next day.
-
Authentic Yet Adaptable: Traditional flavor with simple, accessible ingredients.
-
Crowd Pleaser: Perfect for cookouts, potlucks, and family gatherings.
Ingredients You’ll Need (Serves 8)
-
1 pound (450g) dried pinto beans
-
2 tablespoons kosher salt (for soaking)
-
6 cups (1.4 liters) low-sodium chicken broth (homemade or store-bought)
-
2 bay leaves
-
2 fresh epazote sprigs (optional, for authentic flavor)
-
12 ounces (340g) thick-cut bacon, diced
-
1 medium white or yellow onion, finely chopped (about 8 ounces / 225g)
-
2 serrano chiles or 1 jalapeño, minced (seeded for less heat)
-
3 garlic cloves, minced (about 1 tbsp / 12g)
-
2 cans (14 ounces / 400g each) fire-roasted diced tomatoes
-
1 large handful fresh cilantro, chopped (leaves and tender stems)
-
Additional kosher salt, to taste
Step-by-Step Instructions
1. Soak the Beans
Place pinto beans in a large bowl and cover with water by at least 4 inches. Stir in 2 tablespoons of kosher salt until dissolved. Soak at room temperature for 8–12 hours. Drain and rinse before cooking.
2. Simmer the Beans
In a Dutch oven, combine soaked beans, chicken broth, bay leaves, and epazote (if using). Bring to a boil, then reduce to a gentle simmer. Cover and cook for about 45 minutes, until beans are just tender.
3. Cook the Bacon and Aromatics
In a large skillet over medium-high heat, cook bacon until fat renders and edges are crisp—about 5 minutes.
Add diced onions and minced chiles; sauté until softened, about 4 minutes. Stir in minced garlic and cook for 30 seconds.
4. Build the Flavor Base
Add fire-roasted tomatoes to the skillet. Scrape up browned bits from the bottom and simmer for 3 minutes, allowing the mixture to thicken.
5. Combine and Finish Cooking
Stir the bacon-tomato mixture into the beans. Cook uncovered for another 20 minutes, until broth thickens into a rich, soupy consistency.
6. Season and Serve
Taste and adjust with salt if needed. Remove bay leaves, stir in chopped cilantro, and serve hot.
Pro Tips for Success
-
Don’t Skip the Soak: Soaking beans shortens cooking time and improves texture.
-
Epazote for Authenticity: Adds a subtle herbal note and helps with bean digestion.
-
Control the Heat: Use serranos for a kick or jalapeños for a milder flavor.
-
Bacon Depth: Let bacon get slightly crisp for maximum smoky flavor in the broth.
Serving Suggestions
-
Serve as a side dish with grilled steak, chicken, or carnitas.
-
Enjoy as a main dish with warm tortillas.
-
Spoon over Mexican rice for a hearty, filling meal.
Storage & Leftovers
-
Refrigerator: Store in an airtight container for up to 1 week.
-
Freezer: Freeze for up to 3 months. Thaw in the fridge overnight before reheating.
-
Reheat: Warm gently on the stove or in the microwave.
Why This Recipe Works
This recipe builds flavor in layers—bacon for smoky depth, chiles for heat, tomatoes for acidity, and cilantro for freshness. Cooking the beans in broth instead of water infuses them with savory richness, while the final simmer brings everything together into a cohesive, soul-warming dish.
Recipe FAQ
Q: Can I use canned beans instead of dried?
A: Yes—use 3 (15-ounce) cans of pinto beans, rinsed and drained. Reduce simmer time to about 15 minutes.
Q: Can I make this vegetarian?
A: Absolutely—skip the bacon and use vegetable broth. Add smoked paprika for depth.
Q: How spicy are these beans?
A: Medium heat with serranos; use jalapeños or remove seeds for milder flavor.
Q: What’s the best broth to use?
A: Homemade chicken broth is ideal, but store-bought works perfectly.
Final Thoughts
Frijoles Charros are the ultimate Mexican comfort food—smoky, savory, and brimming with flavor. They’re hearty enough to be a meal on their own yet versatile enough to serve as the perfect side dish for grilled meats or tacos.
This is a dish that rewards you for taking your time. Each bite carries a taste of tradition, and like all great recipes, it’s even better the next day.

Frijoles Charros (Mexican Charro Beans)
Ingredients
Method
- Place pinto beans in a large bowl and cover with water by at least 4 inches. Stir in 2 tablespoons of kosher salt until dissolved. Soak at room temperature for 8–12 hours. Drain and rinse before cooking.
- In a Dutch oven, combine soaked beans, chicken broth, bay leaves, and epazote (if using). Bring to a boil, then reduce to a gentle simmer. Cover and cook for about 45 minutes, until beans are just tender.
- In a large skillet over medium-high heat, cook bacon until fat renders and edges are crisp—about 5 minutes.
- Add diced onions and minced chiles; sauté until softened, about 4 minutes. Stir in minced garlic and cook for 30 seconds.
- Add fire-roasted tomatoes to the skillet. Scrape up browned bits from the bottom and simmer for 3 minutes, allowing the mixture to thicken.
- Stir the bacon-tomato mixture into the beans. Cook uncovered for another 20 minutes, until broth thickens into a rich, soupy consistency.
- Taste and adjust with salt if needed. Remove bay leaves, stir in chopped cilantro, and serve hot.