Quick Recipe Version (TL;DR)
Quick Ingredients
- 1 lb (455 g; about 2 cups) dried pinto beans, soaked and drained
- 6 oz (170 g) thick-cut bacon, diced
- 8 oz (225 g) fresh Mexican chorizo (optional but traditional)
- 1 large white onion, diced
- 2 jalapeños, diced (seed for mild)
- 2 medium Roma tomatoes, diced
- 4 garlic cloves, minced
- 8 cups (1.9 L) low-sodium chicken broth or water
- 1 tsp ground cumin, 1 tsp dried oregano (Mexican if possible), 1 bay leaf
- 1 1/2 tsp kosher salt, 1/2 tsp black pepper
- 2 tbsp chopped cilantro, plus more to garnish
- 1 tbsp fresh lime juice
Do This
- 1. Soak beans 8–12 hours; drain and rinse. (Quick-soak: boil 2 minutes, cover and rest 1 hour.)
- 2. In a 5–6 qt pot over medium heat, cook bacon 5–7 minutes until crisp; add chorizo and brown 4–5 minutes. Spoon off excess fat, leaving 2–3 tbsp in pot.
- 3. Add onion and jalapeños; cook 5 minutes until translucent. Stir in garlic, cumin, and oregano; cook 1 minute until fragrant.
- 4. Add beans, broth, and bay leaf. Bring to a boil, then simmer gently (185–200°F) partially covered for 75 minutes, stirring occasionally.
- 5. Stir in tomatoes, salt, and pepper; simmer 10–15 minutes more until beans are tender and broth is flavorful.
- 6. Finish with lime juice and cilantro. Adjust salt and thickness with a splash of hot water if needed.
- 7. Serve hot, brothy, and smoky; garnish with extra cilantro and jalapeño.
Why You’ll Love This Recipe
- Classic, smoky Mexican comfort food with a savory bacon-and-chorizo backbone.
- Brothy, spoonable beans that eat like a hearty side or a full bowl.
- Flexible heat level: seed the jalapeños for mild or leave them in for a kick.
- Budget-friendly ingredients that scale easily for a crowd.
Grocery List
- Produce: 1 large white onion, 2 jalapeños, 2 Roma tomatoes, 1 bunch cilantro, 4 garlic cloves, 2 limes
- Dairy: None
- Pantry: 1 lb dried pinto beans, low-sodium chicken broth (or water), ground cumin, dried oregano (Mexican if possible), bay leaf, kosher salt, black pepper
Full Ingredients
Beans & Liquid
- 1 lb (455 g; about 2 cups) dried pinto beans, sorted and rinsed
- 8 cups (1.9 L) low-sodium chicken broth or water (plus extra as needed)
- 1 bay leaf
Meats & Aromatics
- 6 oz (170 g) thick-cut bacon, diced
- 8 oz (225 g) fresh Mexican chorizo, casings removed (optional but traditional)
- 1 large white onion (about 10 oz/285 g), diced
- 2 jalapeños, diced (seed for mild; leave seeds for more heat)
- 4 garlic cloves, minced
- 2 medium Roma tomatoes (about 10 oz/285 g), diced
Seasonings
- 1 tsp ground cumin
- 1 tsp dried oregano (Mexican oregano preferred)
- 1 1/2 tsp kosher salt, plus more to taste
- 1/2 tsp freshly ground black pepper
To Finish & Garnish
- 1 tbsp fresh lime juice (plus more to taste)
- 1/2 cup loosely packed fresh cilantro leaves, chopped (plus extra for garnish)
Optional Add-Ins (use to taste)
- 1–2 tsp minced chipotle in adobo for extra smokiness
- 1/2 tsp smoked paprika if not using chorizo
- 1/2 cup Mexican lager to replace part of the broth

Step-by-Step Instructions
Step 1: Soak the beans (recommended)
Place the dried pinto beans in a large bowl and cover with at least 2 inches of cold water. Soak 8–12 hours, then drain and rinse. Soaking reduces overall cook time and promotes even tenderness. Short on time? Quick-soak by bringing the beans and plenty of water to a boil for 2 minutes, then covering and resting 1 hour before draining.
Step 2: Render bacon and brown chorizo
Set a 5–6 quart Dutch oven or heavy pot over medium heat. Add the diced bacon and cook 5–7 minutes, stirring, until it renders fat and turns lightly crisp. Add the chorizo and cook 4–5 minutes, breaking it up until browned. Spoon off excess fat, leaving about 2–3 tablespoons in the pot for flavor.
Step 3: Sauté aromatics and bloom spices
Add the diced onion and jalapeños to the pot. Cook over medium heat for 5 minutes until the onions turn translucent. Stir in the minced garlic, cumin, and oregano; cook 1 minute until fragrant, scraping up any browned bits.
Step 4: Add beans and simmer until tender
Add the soaked beans, 8 cups broth or water, and the bay leaf. Bring to a full boil over medium-high heat, then reduce to maintain a gentle simmer at about 185–200°F. Partially cover and cook for 75 minutes, stirring every 15 minutes and adding hot water as needed to keep the beans submerged by about 1/2 inch.
Instant Pot option: After sautéing in the pot on Sauté mode, add beans, liquid (use 7 cups), and bay leaf. Pressure cook on High for 35 minutes with a 20-minute natural release. Switch back to Sauté to finish Steps 5–6.
Step 5: Season and build a smoky, brothy finish
Stir in the diced tomatoes, kosher salt, and black pepper. If you like a deeper smoky note, add chipotle in adobo or a pinch of smoked paprika. Simmer 10–15 minutes more, uncovered, until the beans are fully tender and the broth tastes rich and cohesive.
Step 6: Adjust texture and brighten
Taste and adjust salt. If the broth is too thick, stir in a splash of hot water or broth; if too thin, simmer a few minutes more. For body, lightly mash 1/2 cup of beans against the side of the pot and stir back in. Off the heat, stir in lime juice and chopped cilantro.
Step 7: Serve
Ladle into bowls with plenty of broth. Garnish with extra cilantro and sliced jalapeño. Serve hot alongside warm tortillas, sliced radishes, and lime wedges.
Pro Tips
- Salt timing: If your beans won’t soften, they may be old. Salt during the last 20–30 minutes of simmering to avoid tough skins while still seasoning properly.
- Keep it brothy: Charro beans should be spoonable with a savory broth. Add hot water in 1/2-cup increments to maintain a brothy consistency.
- Bean doneness: Perfectly cooked pintos are tender to the center with some just beginning to split; taste several beans, not just one.
- Heat control: A gentle simmer (occasional small bubbles) prevents broken skins and keeps the broth clear and flavorful.
- Herb swap: Mexican oregano has a citrusy, floral note—use it if you can. If not, regular oregano works; use a scant teaspoon.
Variations
- Vegetarian Charros: Skip bacon and chorizo. Sauté aromatics in 2 tbsp olive oil, add 1–2 tsp minced chipotle and 1/2 tsp smoked paprika for depth.
- Cerveza Charra: Replace 1/2 cup of the broth with Mexican lager and simmer off the alcohol for a malty, savory note.
- Spicy Charros: Use serranos instead of jalapeños and leave the seeds in. Add a pinch of cayenne for extra heat.
Storage & Make-Ahead
Refrigerate cooled beans in their broth in an airtight container for up to 4 days. Freeze for up to 3 months; thaw overnight in the refrigerator. Reheat gently over medium-low heat until simmering, adding water as needed. Beans actually taste better the next day as flavors meld—perfect for make-ahead meals.
Nutrition (per serving)
Approximate for 1/6 recipe made with both bacon and chorizo: 430 calories; 22 g protein; 46 g carbohydrates; 13 g fiber; 18 g fat; 6 g saturated fat; 900 mg sodium. Actual values vary with salt, meat choices, and broth used.

