Quick Recipe Version (TL;DR)
Quick Ingredients
- 8 corn tortillas (6-inch)
- 3 tbsp neutral oil (plus more as needed), divided
- 1 (15 oz / 425 g) can pinto beans, drained and rinsed
- 1/2 cup (120 ml) low-sodium chicken or vegetable broth (or water)
- 1/2 tsp ground cumin
- 1/2 tsp kosher salt (plus more to taste)
- 4 medium Roma tomatoes (about 1 lb / 450 g)
- 1/2 medium white onion, peeled and halved
- 1 jalapeño
- 2 garlic cloves, peeled
- 1 chipotle pepper in adobo + 1 tsp adobo sauce
- 1 tbsp fresh lime juice (plus wedges to serve)
- 8 large eggs
- 1/2 cup (2 oz / 56 g) crumbled queso fresco
- 1/2 cup loosely packed cilantro leaves
Do This
- 1) Broil tomatoes, onion, jalapeño, and garlic 6–8 minutes per side until blistered; blend with chipotle, adobo, lime, and salt.
- 2) Simmer beans with broth, cumin, and salt 5 minutes; mash to a thick, spreadable texture.
- 3) Fry tortillas in a thin layer of oil over medium heat, 45–60 seconds per side; drain on a paper towel.
- 4) Warm salsa roja in a small pan 2–3 minutes (taste and salt as needed).
- 5) Fry eggs sunny-side in a lightly oiled nonstick skillet over medium-low heat 3–4 minutes until whites set.
- 6) Assemble: tortilla + warm beans + salsa roja + egg; repeat for a 2-tortilla stack per plate.
- 7) Finish with queso fresco, cilantro, and a squeeze of lime; serve hot.
Why You’ll Love This Recipe
- Big flavor, simple technique: Broiled vegetables and chipotle create a smoky salsa roja without complicated steps.
- Restaurant-style layers at home: Crisp tortillas, creamy beans, and runny yolks make every bite satisfying.
- Flexible and pantry-friendly: Canned beans and basic staples turn into a bold meal fast.
- Perfect anytime: Breakfast-for-dinner, brunch centerpiece, or a hearty weekend treat.
Grocery List
- Produce: Roma tomatoes, white onion, jalapeño, garlic, cilantro, limes
- Dairy: queso fresco, eggs
- Pantry: corn tortillas, canned pinto beans, chipotle peppers in adobo, neutral oil, low-sodium broth (or water), ground cumin, kosher salt
Full Ingredients
Smoky Salsa Roja (makes about 1 3/4 cups)
- 4 medium Roma tomatoes (about 1 lb / 450 g), halved lengthwise
- 1/2 medium white onion, peeled and cut into 2 thick wedges (keep root end intact if possible)
- 1 jalapeño, whole
- 2 garlic cloves, peeled
- 1 chipotle pepper in adobo
- 1 tsp adobo sauce (from the can)
- 1 tbsp fresh lime juice
- 1/2 tsp kosher salt, plus more to taste
- 2 tbsp water (only if needed to blend)
Warm Beans (quick “refried-style”)
- 1 tbsp neutral oil (avocado, canola, or grapeseed)
- 1 (15 oz / 425 g) can pinto beans, drained and rinsed
- 1/2 cup (120 ml) low-sodium chicken or vegetable broth (or water)
- 1/2 tsp ground cumin
- 1/2 tsp kosher salt, plus more to taste
Tortillas and Eggs
- 8 corn tortillas (6-inch)
- 2 tbsp neutral oil (plus more as needed for frying tortillas), divided
- 8 large eggs
- 1/4 tsp kosher salt (for the eggs)
To Finish and Serve
- 1/2 cup (2 oz / 56 g) crumbled queso fresco
- 1/2 cup loosely packed cilantro leaves
- 1 lime, cut into wedges

Step-by-Step Instructions
Step 1: Broil the vegetables for smoky salsa roja
Position an oven rack about 6 inches from the broiler. Set the broiler to High.
Arrange the halved Roma tomatoes (cut side down), onion wedges, whole jalapeño, and peeled garlic cloves on a rimmed baking sheet. Broil for 6–8 minutes, then flip the tomatoes and onion and broil for 5–7 minutes more, until the vegetables are softened with dark blistered spots. (You want real char in places; that’s the smoky flavor.)
Let the vegetables cool for 3 minutes so they’re easier to handle.
Step 2: Blend and simmer the salsa roja
Add the broiled tomatoes, onion, jalapeño, and garlic to a blender. Add the chipotle pepper, adobo sauce, lime juice, and 1/2 tsp kosher salt. Blend until smooth (or slightly textured, if you prefer).
If your blender needs help, add up to 2 tbsp water to get things moving.
Pour the salsa into a small saucepan and bring to a gentle simmer over medium heat. Cook for 3 minutes, stirring occasionally. Taste and add more salt if needed. Keep warm on low heat.
Step 3: Warm and mash the beans until creamy
In a small saucepan, heat 1 tbsp neutral oil over medium heat. Add the rinsed pinto beans, broth, cumin, and 1/2 tsp kosher salt.
Simmer for 5 minutes, stirring occasionally, until hot. Use a potato masher or the back of a spoon to mash the beans to a thick, spreadable consistency. If the beans seem dry, add broth or water 1 tbsp at a time until creamy. Reduce heat to low to keep warm.
Step 4: Fry the tortillas until crisp-tender
Set a plate aside with paper towels for draining. In a skillet (cast iron works great), heat 2 tbsp neutral oil over medium heat. The oil should shimmer but not smoke.
Fry tortillas one at a time (or two if your pan fits comfortably): cook for 45–60 seconds per side until lightly crisped and just beginning to turn golden in spots. Add a little more oil if the pan looks dry. Transfer to the paper towel-lined plate.
You’re aiming for tortillas that can hold toppings without turning soggy, but still have a pleasant bite (not hard like chips).
Step 5: Fry sunny-side eggs with set whites and runny yolks
Wipe out the skillet if there are browned bits, then return it to the stove. Heat 1 tbsp neutral oil over medium-low heat.
Crack in the eggs (work in batches if needed). Season with 1/4 tsp kosher salt total across all eggs (or to taste). Cook for 3–4 minutes until the whites are fully set and the yolks are still soft and glossy. If you like a slightly more set top, cover the pan for the last 30–45 seconds.
Step 6: Assemble the huevos rancheros stacks
For each serving, place 1 tortilla on a plate. Spread about 1/4 cup warm beans on top. Spoon about 2 1/2 tbsp warm salsa roja over the beans.
Add a second tortilla and repeat with another 1/4 cup beans and 2 1/2 tbsp salsa. Top with 2 sunny-side eggs.
Step 7: Finish with queso fresco, cilantro, and lime
Top each plate with about 2 tbsp crumbled queso fresco and a small handful of cilantro leaves. Serve immediately with lime wedges, and encourage everyone to squeeze fresh lime over the eggs right before eating for the brightest flavor.
Pro Tips
- Control the heat level: For milder salsa, remove the jalapeño stem and shake out some seeds after broiling, then blend. For hotter, blend it whole and add a second chipotle pepper.
- Get better char: Don’t overcrowd the broiler pan. More space around the vegetables equals better blistering and less steaming.
- Keep tortillas crisp: Assemble right before serving. If you need to hold tortillas for a few minutes, place them on a wire rack (not a plate) so steam doesn’t soften them.
- Bean texture matters: Mash to “spreadable hummus” consistency. Too thin and the tortillas get soggy; too thick and it’s hard to layer.
- Egg timing: Start frying eggs only when everything else is warm and ready so they land on the plate hot with runny yolks.
Variations
- Black beans and cotija: Swap pinto beans for black beans and use cotija instead of queso fresco for a saltier finish.
- Extra hearty: Add 1/2 sliced avocado per serving and a spoonful of sour cream or Mexican crema.
- Shortcut salsa roja: Use 1 3/4 cups good-quality store-bought salsa roja; simmer it for 3 minutes with 1 minced chipotle (optional) to add smoky depth.
Storage & Make-Ahead
Make ahead: The salsa roja and beans can be made up to 4 days in advance and stored in airtight containers in the refrigerator. Rewarm salsa and beans in separate saucepans over medium-low heat, adding a splash of water or broth to the beans if they’ve thickened.
Store: Leftover salsa and beans keep well; fried eggs and assembled stacks do not store nicely (the tortillas soften and eggs overcook). If you have leftovers, store components separately and fry fresh eggs when serving.
Freeze: Salsa roja and mashed beans freeze well for up to 2 months. Thaw overnight in the refrigerator and rewarm gently.
Nutrition (per serving)
Approximate, will vary by tortilla size and oil absorption: 610 calories; 26 g protein; 58 g carbohydrates; 31 g fat; 9 g saturated fat; 14 g fiber; 980 mg sodium.
