Side Dishes
This authentic Mexican charro beans recipe delivers the smoky, cumin-rich flavor that makes it a staple at Mexican tables—perfect for weeknight dinners or festive gatherings.
The secret lies in slow-simmered beans infused with earthy spices, tender bacon (or mushrooms for a vegetarian twist), and fresh epazote for that signature herby brightness. I’ve perfected this one-pot method over years of testing, ensuring every bite captures the soul of Mexican home cooking.
The beauty of charro beans is their versatility—they’re hearty enough to stand alone but elegant enough to complement grilled meats, tacos, or rice. What sets this recipe apart is the slow simmering time, which develops deep, smoky flavors without overpowering the beans’ natural sweetness.
No fancy techniques required—just patience and a few key ingredients to transform simple pinto beans into something extraordinary.
By the end, you’ll have a pot of rich, smoky beans with tender bacon (or mushrooms) and a fragrant epazote finish. The texture is just right—creamy yet firm—and the aroma alone will have everyone at the table asking for seconds.
This is the kind of dish that feels like a warm embrace, especially when paired with warm tortillas or fluffy rice.
Whether you’re serving a family dinner or prepping for a fiesta, this recipe delivers authentic flavor in one pot. The best part? Leftovers taste even better the next day, making it a meal-prep favorite. Let’s get cooking—your taste buds will thank you.
Ingredients for authentic mexican charro beans
Pinto beans, earthy spices, and slow-simmered magic—this vegetarian charro beans recipe delivers authentic Mexican flavor in one pot.
| Ingredient | Amount | Notes |
|---|---|---|
| Dried Pinto Beans 🌽 | 1 ½ cups | Rinsed before soaking |
| Vegetable Broth 💧 | 4 cups | Low-sodium preferred |
| White Onion 🧅 | 1 whole | Diced, yellow or white |
| Garlic Cloves 🧄 | 4 cloves | Minced, fresh preferred |
| Ground Cumin 🌿 | 2 tsp | Toasted for deeper flavor |
| Smoked Paprika 🌶️ | 1 tbsp | For authentic smokiness |
| Dried Oregano 🍃 | 1 tsp | Mexican oregano if available |
| Bay Leaves 🌿 | 2 whole | Fresh if possible |
| Fresh Epazote 🌿 | ¼ cup | Chopped, or substitute cilantro |
| White Wine Vinegar 🍋 | 1 tbsp | For brightness |
| Olive Oil 🫒 | 2 tbsp | Extra-virgin for richness |
| Salt 🧂 | 1 ½ tsp | Diamond Crystal preferred |
| Black Pepper 🌶️ | ½ tsp | Freshly ground |
| Mushrooms 🍄 | 6 oz | Crimini or baby bella, sliced |
| Fresh Lime 🍋 | 1 whole | Juiced, for finishing |
The beans are the foundation, so don’t skimp on quality. Dried pinto beans from Mexican markets or bulk bins have the best texture, but any dried variety works. If you’re short on time, pre-soaked or canned beans (drained and rinsed) save the day—just add 1/2 cup extra liquid. For the mushrooms, crimini or baby bella add that meaty texture vegetarians crave. I grab mine at Whole Foods when they’re on sale, but any grocery store carries them. The epazote? If you can’t find it, cilantro or parsley works in a pinch—just use less since it’s milder. Toast your cumin seeds in a dry pan for 30 seconds before grinding—that smoky aroma is worth the extra minute.
No smoked paprika? Regular paprika plus a pinch of liquid smoke gets you close. Fresh epazote unavailable? Cilantro or Mexican tarragon (if you’re feeling fancy) brings a similar herbal note. The white wine vinegar adds brightness—apple cider vinegar works too, but the flavor shifts slightly. For the mushrooms, shiitake or oyster mushrooms add even more depth. If you’re serving this with tortillas, corn tortillas are traditional, but flour works fine. The broth? Homemade vegetable broth elevates everything, but low-sodium store-bought is a solid backup. Just remember: the longer you simmer, the deeper the flavors—two hours minimum for that restaurant-quality texture.
These beans taste even better the next day—plan ahead. Store in an airtight container in the fridge for 4-5 days or freeze for 3 months. I like to portion mine into containers with a sprinkle of lime juice on top—keeps them fresh longer. For serving, a drizzle of extra-virgin olive oil and extra epazote (if you’ve got it) takes it to the next level. The mushrooms stay tender, so reheat gently on the stove with a splash of broth. Leftovers make killer tacos or quesadillas—just what you need for lazy weeknights.
Why You'll Love This Recipe
- No-Soak Necessary: I’ll admit, I used to dread the overnight soak—until I discovered these beans cook beautifully right from dried. Just a quick rinse and simmer, and the broth pulls all that earthy pinto richness right out. My lazy Sundays thank me.
- Cumin Magic: That first whiff of toasted cumin hitting the pan? Instantly transports me to a taqueria. The deep, warm aroma lingers, then mellows into this perfect balance of smoky and savory. Honestly, I’ve tried store-bought—nothing beats homemade.
- Weeknight Workhorse: Toss these into a burrito bowl for dinner, then reheat the leftovers for lunch. They’re the quiet hero that pairs with everything: grilled chicken, crispy tortillas, even just with cheese and sour cream. My go-to for when I’m too tired to plan.
- Pantry Staple Power: Five ingredients, zero specialty items. The onion and garlic add depth for pennies, and dried beans last forever. I’ve made this through three grocery budgets—it’s the kind of recipe that stretches dollars without stretching patience. (Yes, even on a Tuesday night.)
Step-by-step instructions for authentic Mexican charro beans
Here's how to transform simple ingredients into restaurant-quality charro beans with deep smoky flavor and tender texture.
Soak and Prepare the Beans
Rinse the 1.5 cups dried pinto beans thoroughly under cold water to remove any debris. Place them in a large bowl and cover with plenty of cold water - at least 3 inches above the beans. Let them soak for 8-12 hours at room temperature. I like to do this overnight in the refrigerator for even better texture.
The key here is proper hydration. After soaking, drain the beans and give them a quick rinse. You'll notice they've swollen significantly and become more pliable. This preparation step is crucial for preventing the beans from splitting during cooking and ensures they absorb all those wonderful smoky flavors we're building.
Build the Flavor Base
In a large, heavy-bottomed pot, heat the 2 tablespoons olive oil over medium heat. Add the diced white onion and cook for 5-6 minutes until softened and translucent. Add the minced garlic cloves and cook for another 30 seconds until fragrant - you should smell that sweet garlic aroma filling your kitchen.
Now stir in the 2 teaspoons ground cumin, 1 tablespoon smoked paprika, 1 teaspoon dried oregano, 1.5 teaspoons salt, and 0.5 teaspoon black pepper. Toast these spices for 30 seconds until you can smell their aromatic oils releasing. This quick toasting step develops their flavors and prevents them from tasting raw in the final dish.
Simmer the Beans with Aromatics
Add the drained pinto beans to the pot along with the 4 cups vegetable broth and 2 whole bay leaves. Bring everything to a gentle boil, then immediately reduce heat to low. Cover the pot and let it simmer for 1.5 hours, stirring occasionally to prevent sticking.
After the initial hour, add the 6 ounces sliced mushrooms and 0.25 cup chopped fresh epazote. The mushrooms will absorb the bean broth beautifully, adding earthy depth. The epazote, with its distinctive herbal note, is what makes these beans truly authentic - don't skip it if you can find it. If you can't, a tablespoon of chopped cilantro works as a substitute.
Finish with Acid and Brightness
Once the beans are tender (they should be soft but not mushy), stir in the 1 tablespoon white wine vinegar and juice of 1 whole fresh lime. This acidity brightens all the rich flavors and cuts through any heaviness. Taste and adjust seasoning - you might want to add a bit more salt or lime juice to your preference.
Let the beans simmer uncovered for another 10-15 minutes to thicken slightly. The sauce should coat the back of a spoon but still be loose enough to spoon easily. If it's too thick, add a splash of water or broth. The final texture should be creamy yet still have some body to it, not watery.
Rest and Serve
Remove the pot from heat and let the beans rest for 10 minutes before serving. This resting period allows all the flavors to meld together perfectly. Before serving, taste again and adjust seasoning if needed - sometimes the flavors develop even more during this resting time.
Serve the charro beans warm, either as a standalone dish or alongside your favorite Mexican proteins like carnitas or grilled chicken. The smoky, cumin-infused flavors will complement any main course beautifully. These beans keep well in the refrigerator for up to 5 days, making them perfect for meal prep - just reheat gently with a splash of water or broth to restore their creamy texture.
Pro Tips For Making Authentic Mexican Charro Beans
- SOAK BEANS OVERNIGHT: I learned this the hard way—rushing the soak with cold water leaves them tough. Use 4 cups warm water per cup of dried pintos, soak 8+ hours (or quick-soak: 2 hours in boiling water, then 1 hour off heat). The longer they soak, the creamier the texture, and you’ll save time skimming skins later.
- CARMELIZE ONIONS LOW: Skip the high heat that burns them into bitter sludge. Cook onions over medium-low with a pinch of salt, stirring often—about 15 minutes until deep amber. This sweetens them properly and gives your beans that rich, jammy base.
- TOAST CUMIN WITH GARLIC: After blooming the cumin in dry pan, crush the garlic cloves first—this releases more flavor. Cook them together 30 seconds until garlic just turns golden, not brown. It’s the thing that matters most for that deep, earthy aroma in charro beans.
- SKIM SKINS MID-COOK: After simmering 45 minutes, skim off any foam and floating skins with a slotted spoon. I know, it’s annoying, but it guarantees a silky texture. If you skip this, you’ll end up with a gummy batch—trust me, I’ve made it worse.
Common mistakes when making this dish
Skipping the Soak
I’ve seen many beginners skip soaking their beans to save time, but this is a big mistake. Unsoaked beans take 4-6 hours longer to cook and often split open, releasing starches that make the final dish mushy.
If you’re in a hurry, use pre-soaked beans from the canned aisle (drained and rinsed) or opt for quick-soak method: Boil beans for 2 minutes, then let them sit off heat for 1 hour before cooking. 💡
Overcrowding the Pot
Charro beans need room to breathe during simmering. If you pack too many beans into your pot, they’ll steam instead of simmer, leading to a watery, flavorless result.
Use a pot that’s at least 3-4 inches taller than the bean level—I like my 6-quart Dutch oven—and never fill it more than 2/3 full. For every 1.5 cups dried beans, plan for 4-5 cups liquid.
Ignoring the Smoked Paprika
The smoky depth of charro beans comes from smoked paprika, not just regular paprika. Substituting with regular paprika will leave your beans tasting flat. If you can’t find smoked paprika, combine 1 tbsp regular paprika with ½ tsp liquid smoke (like Annie’s brand) for a similar effect.
Toast the paprika in the oil for 30 seconds to intensify its flavor even more.
Rushing the Simmer
Low and slow is key—don’t rush the 2-hour simmer. Skipping this step results in beans that are still firm or taste bland. The long cook time allows the flavors to meld and the beans to develop that creamy, tender texture.
If you’re short on time, use pre-cooked canned beans (drained and rinsed) and simmer for at least 1 hour instead. Just add extra liquid to compensate for their higher starch content.
Forgetting the Epazote
Epazote is the secret ingredient that gives charro beans their authentic flavor. If you skip it, your beans will lack that bright, herbal note. If you can’t find fresh epazote, use 1 tbsp chopped cilantro as a substitute, but reduce the amount by half since cilantro is milder.
For an even deeper flavor, add ½ tsp dried epazote (if available) along with the other spices during the toasting step.
Over-Salting at the End
It’s easy to over-salt charro beans because the flavors develop during simmering. Taste as you go—add salt in ¼ tsp increments—and remember that the beans will absorb more salt as they cook.
If your beans taste bland at the end, a splash of lime juice or extra white wine vinegar can brighten them up without adding more salt. Always taste before serving! ✨
Nutrition facts
Frequently asked questions
Can I make charro beans without epazote?
Yes! While epazote gives authentic flavor, you can substitute with 1 tablespoon chopped cilantro or ½ teaspoon dried Mexican oregano for a similar herbal note. For extra depth, add ½ teaspoon dried thyme during the spice toasting step. The dish will still taste delicious without it!
How do I make these beans vegetarian?
This recipe already includes a vegetarian-friendly version using mushrooms instead of bacon. For extra richness, try adding ½ cup diced smoked tofu or 1 tablespoon liquid smoke to mimic the smoky bacon flavor. The mushrooms add a meaty texture that works perfectly with the beans.
Can I use canned beans instead of dried?
Use 3 cups drained and rinsed canned pinto beans (about 2 cans) and reduce the broth to 3 cups. Since canned beans are pre-cooked, simmer for only 45-60 minutes instead of 2 hours. The texture will be slightly softer but still delicious. Just add a splash of water if the mixture gets too thick.
What's the best way to store leftovers?
Store in an airtight container in the fridge for 4-5 days or freeze for 3 months. For reheating, add 2-3 tablespoons water or broth per cup of beans and simmer on low heat until warmed through. The flavors actually improve overnight, making them perfect for meal prep!
How do I adjust the spice level?
For milder beans, reduce the smoked paprika to 1 teaspoon and omit any chili powder. For extra heat, add ½ teaspoon cayenne pepper with the initial spices or serve with hot sauce on the side. Always taste as you go—you can adjust heat at any point during cooking.
