Quick Recipe Version (TL;DR)
Quick Ingredients
- 3 lb bone-in beef shank (3–4 cross-cut pieces)
- 12 cups water
- 1 large white onion (half for broth, half chopped for garnish)
- 4 garlic cloves
- 2 bay leaves, 1 tsp whole peppercorns (optional)
- 4 Roma tomatoes (about 1 lb) or 1 can (14.5 oz) diced tomatoes
- 1 tbsp neutral oil
- 2 tsp kosher salt, plus more to taste
- 3 carrots (12 oz), cut into 1.5-inch chunks
- 1 lb Yukon Gold potatoes, peeled, 2-inch chunks
- 2 ears corn, cut into 2-inch rounds
- 1 lb green cabbage, cut into 6–8 wedges (core intact)
- 1 medium calabacita or zucchini (10 oz), 1-inch half-moons
- 1/2 cup chopped cilantro; 2 limes, cut into wedges
- 12 warm corn tortillas
Do This
- 1. Combine beef, water, half onion, garlic, bay, peppercorns; bring to a boil, skim, then simmer gently (185–195°F) 1 hour 30 minutes.
- 2. Sauté chopped onion in oil 4 minutes; add tomatoes 5 minutes; blend with 1 cup hot broth until smooth; stir into pot with 2 tsp salt.
- 3. Add carrots and potatoes; simmer 20 minutes.
- 4. Add corn and cabbage; simmer 12 minutes.
- 5. Add squash; simmer 8–10 minutes until all vegetables are tender and beef is very soft. Adjust salt and pepper.
- 6. Rest 5 minutes; serve in bowls with cilantro, chopped onion, lime wedges, and warm tortillas.
Why You’ll Love This Recipe
- Classic Mexican comfort: tender beef shank and marrow in a bright tomato-onion broth.
- Hearty but wholesome, packed with cabbage, corn, carrots, potatoes, and squash.
- One-pot cooking with simple, accessible ingredients and dependable timing.
- Perfect for gatherings; even better the next day.
Grocery List
- Produce: Roma tomatoes, white onion, garlic, carrots, Yukon Gold potatoes, green cabbage, calabacita or zucchini, cilantro, limes, corn on the cob
- Dairy: None
- Pantry: Bone-in beef shank, bay leaves, whole black peppercorns, kosher salt, neutral oil, corn tortillas
Full Ingredients
For the Broth and Beef
- 3 lb bone-in beef shank (cross-cut, 1.5–2 inches thick)
- 12 cups water
- 1/2 large white onion (left in one piece)
- 4 garlic cloves, lightly crushed
- 2 bay leaves
- 1 tsp whole black peppercorns (optional)
- 2 tsp kosher salt, plus more to taste
- Optional: small bunch cilantro stems tied with kitchen twine
For the Tomato–Onion Base
- 4 medium Roma tomatoes (about 1 lb), cored and quartered (or 1 can, 14.5 oz, diced tomatoes)
- 1/2 large white onion, roughly chopped
- 1 tbsp neutral oil (avocado, canola, or grapeseed)
Vegetables
- 3 medium carrots (12 oz), peeled and cut into 1.5-inch chunks
- 1 lb Yukon Gold potatoes, peeled and cut into 2-inch chunks
- 2 ears fresh corn, husked and cut into 2-inch rounds
- 1 lb green cabbage, cut into 6–8 wedges (keep core intact so wedges hold together)
- 1 medium calabacita (Mexican squash) or zucchini (10 oz), cut into 1-inch half-moons
For Serving
- 1/2 cup cilantro leaves, chopped
- 1/2 cup white onion, finely chopped
- 2 limes, cut into wedges
- 12 corn tortillas, warmed

Step-by-Step Instructions
Step 1: Trim and rinse the beef shanks
Pat the beef shanks dry. Trim any large, dangling pieces of surface fat while keeping the meat intact on the bone (the bone and connective tissue give body to the broth). Rinse quickly under cold water to remove bone fragments, then pat dry again.
Step 2: Start a clear, flavorful broth
In a large 6–8 quart pot, combine the beef shanks, 12 cups water, 1/2 onion (left in one piece), garlic, bay leaves, peppercorns, and optional tied cilantro stems. Bring to a boil over medium-high heat. Skim off foamy impurities as they rise for a clear broth.
Reduce to a gentle simmer, partially cover, and cook 1 hour 30 minutes, maintaining a soft bubble at about 185–195°F (85–90°C). Turn the shanks once midway through.
Step 3: Build the tomato–onion base
In a skillet over medium heat, warm the oil. Add the chopped half onion and cook until translucent and lightly golden, about 4–5 minutes. Add the tomatoes and cook, stirring, until they soften and release juices, 5–6 minutes.
Transfer the tomato–onion mixture to a blender with 1 cup of hot broth from the pot. Vent the lid and blend until very smooth. Pour this salsa into the pot and stir. Add 2 tsp kosher salt. Continue to simmer 10 minutes.
Step 4: Add firm vegetables (carrots and potatoes)
Add the carrot chunks and potato pieces to the pot. Simmer uncovered for 20 minutes, keeping the heat low so the broth stays gently active. If the level drops too much, add a cup or two of hot water to keep everything submerged.
Step 5: Add corn and cabbage
Add the corn rounds and cabbage wedges, tucking them gently into the broth. Simmer 12 minutes until the cabbage is tender around the edges but still holds its wedge shape.
Step 6: Finish with squash
Add the calabacita or zucchini and simmer 8–10 minutes until just tender. At this point, the beef should be very soft; if not, give it another 10–15 minutes at a gentle simmer.
Step 7: Adjust, skim, and rest
Taste and add more salt as needed. Skim excess fat from the surface with a spoon for a cleaner broth. Turn off the heat and let the soup rest 5 minutes to settle flavors.
Step 8: Warm tortillas and serve
Warm the tortillas briefly in a dry skillet (30–45 seconds per side) or wrap in foil and heat at 350°F (175°C) for 8–10 minutes. Ladle caldo de res into deep bowls, ensuring each gets a piece of beef shank, a wedge of cabbage, corn, carrots, potatoes, and squash. Garnish with chopped cilantro and onion. Serve with lime wedges for squeezing and warm tortillas on the side.
Pro Tips
- Keep cabbage wedges intact by leaving the core attached; they won’t fall apart in the pot.
- Skim early and often for a clear, golden broth.
- Cut vegetables into large pieces so they cook evenly and don’t disintegrate during the final simmer.
- Salt in layers: start with a measured amount, then finish with a final seasoning once the vegetables are tender.
- If the broth reduces too much, add hot water to maintain coverage and gentle convection.
Variations
- Pressure Cooker: Cook beef, aromatics, and water on High Pressure for 45 minutes; natural release 15 minutes. Add vegetables using Sauté: carrots/potatoes 8–10 minutes, then corn/cabbage 6 minutes, squash 3–4 minutes.
- Spicy: Blend 1–2 chipotles in adobo with the tomato–onion base for a smoky heat.
- Extra Rich: Add 1–2 marrow bones or a pound of oxtail to the initial simmer for deeper body and gelatin.
Storage & Make-Ahead
Refrigerate in airtight containers up to 4 days; the broth will gel slightly from natural collagen and will re-liquefy when warmed. Freeze up to 3 months (leave a little headspace in containers). Reheat gently on the stovetop until steaming. For best texture, you can cook the beef and broth a day ahead, chill, and then reheat to add vegetables just before serving so they stay vibrant.
Nutrition (per serving)
Approximate, without tortillas: 360 calories; 19 g fat; 24 g carbohydrates; 26 g protein; 5 g fiber; 820 mg sodium. Two 6-inch corn tortillas add about 200 calories, 3 g fat, 42 g carbohydrates, and 4 g protein.
