Go Back
Bowl of caldo de res showing tender beef shank in a clear golden broth with large chunks of corn, potato, carrot, chayote, zucchini, and cabbage, on marble surface

Caldo de Res

Caldo de Res is a classic Mexican beef soup built around a clear, deeply savory broth and large, clearly defined pieces of beef and vegetables. The key to a proper version is not complexity but control: the beef shank must simmer gently long enough to give the broth body and richness without turning cloudy, and the vegetables must be added in stages so the corn, potatoes, carrots, chayote, zucchini, and cabbage all finish tender but intact. This is a soup of clarity and generosity — golden broth, marrow-rich beef, and chunky vegetables that still taste like themselves. Finished with fresh cilantro and lime, it is simple, restorative, and very satisfying. Keeping the beef broth at a genuine gentle simmer, never a hard boil, is the technique this whole soup depends on for real clarity — a hard boil agitates fat and proteins directly into the liquid, muddying exactly the clean, golden broth this dish is built around, the same gentle-simmer-protects-clarity principle used elsewhere in this collection whenever a long-cooked beef stock needs to stay genuinely clear rather than cloudy. Adding the vegetables in carefully staged batches, long-cooking ones first and quick-cooking ones only near the end, is what lets every vegetable finish tender at the same moment rather than some collapsing while others remain undercooked. Keeping every piece of beef and vegetable genuinely large, rather than finely cut, is what preserves this soup's rustic, generous character. The payoff is a bowl that's structured and abundant — clear golden broth, marrow-rich beef, and vegetables that still taste distinctly like themselves.
Prep Time 25 minutes
Cook Time 2 hours 30 minutes
Total Time 2 hours 55 minutes
Servings: 4
Course: Main Course, Soup
Cuisine: Mexican
Calories: 480

Ingredients
  

For the Beef Broth
  • 1.3–1.5 kg bone-in beef shank cut into 4 large pieces
  • 2 tsp fine sea salt plus more to taste
  • Freshly ground black pepper to taste
  • 1 medium white onion halved
  • 6 garlic cloves peeled
  • 2 bay leaves
  • 10 black peppercorns
  • 1 small bunch cilantro stems
  • 3.2 litres water
For the Vegetables
  • 2 ears corn cut into 2 or 3 pieces each
  • 2 medium carrots peeled and cut into large chunks
  • 2 medium potatoes peeled and cut into large wedges
  • 1 medium chayote peeled and cut into large chunks
  • 2 medium zucchini cut into thick half-moons or large chunks
  • 1 small green cabbage cut into 4 wedges
For Finishing and Serving
  • 1 small bunch fresh cilantro leaves roughly chopped
  • 2 limes cut into wedges
  • Fine sea salt to taste
  • Warm corn tortillas for serving

Method
 

Start the Broth
  1. Place the beef shank in a large heavy pot. Add the onion, garlic, bay leaves, black peppercorns, cilantro stems, and water. Add the 2 tsp salt. Bring the pot slowly up to a gentle boil over medium heat. As soon as it starts boiling, reduce immediately to a low simmer. Skim the foam and impurities that rise to the surface during the first 20–30 minutes. Simmer uncovered or partially covered for 1 hour 30 minutes, skimming occasionally, until the broth is golden and the beef has started to soften. The broth should be clear and clean-looking, not cloudy. A hard boil will agitate the fat and proteins into the liquid and make the broth muddy, so keep it at a very gentle simmer with only small lazy bubbles. That most concentrated release of foam and impurities happens specifically in these first 20–30 minutes — staying attentive with skimming through that early window is what sets the broth's clarity for the many hours of simmering still to come.
Strain and Clean Up the Broth
  1. Once the broth has developed good flavor, remove and discard the onion, garlic, bay leaves, peppercorns, and cilantro stems. Taste the broth and add a little more salt if needed. If there is a heavy layer of foam or excess fat, skim lightly, but do not remove all the fat — a little surface richness is part of what makes caldo de res satisfying. The broth should taste distinctly beefy and seasoned, but still delicate and brothy rather than heavy or greasy. Removing these aromatics once their flavour has already been extracted, rather than leaving them in for the full remaining cook, keeps them from becoming waterlogged and mushy while adding nothing further to a broth that's already absorbed what they had to give.
Add the Long-Cooking Vegetables
  1. Add the corn pieces, carrots, and potatoes to the broth. Simmer for 15 minutes. Then add the chayote and continue simmering for another 10 minutes. These vegetables go in first because they need longer cooking and help flavor the broth further without overcooking the faster vegetables. The potatoes should just be starting to soften at the edges, and the carrots should be yielding slightly but still hold their shape. Working through the vegetables in genuine stages, rather than adding everything together, respects each one's real, individual cooking time — corn, carrot, and potato all need meaningfully longer than the zucchini and cabbage still to come.
Finish with the Quick-Cooking Vegetables
  1. Add the zucchini and cabbage wedges. Continue simmering for 10–15 minutes more, or until all the vegetables are tender and the beef shank is fully cooked and easy to pull apart with a spoon or fork. Do not overcook at this stage. The zucchini should be tender but not collapsing, and the cabbage should be soft yet still recognizable as a wedge. The final pot should look abundant and structured — not like mixed vegetable soup. Each component should still be visually distinct. Adding these more delicate vegetables only in this final stage, well after the denser ones, is what lets them finish tender in the same window as the rest without turning to mush from spending unnecessary extra time in the simmering broth.
Final Seasoning
  1. Taste the broth one last time and adjust with more salt if needed. Add a few grinds of black pepper if you like, though traditionally the broth stays quite clean and the lime does much of the brightening at the end. Let the soup sit off the heat for 5 minutes before serving so the broth settles slightly and the flavors come together. The beef should be tender but not shredded to threads, the corn juicy, the potatoes creamy, and the broth warm, golden, and fragrant rather than aggressively seasoned. That brief off-heat rest lets residual heat continue gently working through the pot while everything settles into a more cohesive final balance, rather than serving the soup the instant it comes off active heat.
Serve
  1. Place one piece of beef shank in each bowl. Divide the vegetables evenly so each bowl gets corn, carrot, potato, chayote, zucchini, and cabbage. Ladle over plenty of clear golden broth. Finish with chopped fresh cilantro and serve with lime wedges on the side. Warm corn tortillas are the most classic accompaniment. Squeeze lime over the soup just before eating. Serving the lime as a wedge to be squeezed at the table, rather than pre-mixed into the broth, lets each person control their own level of brightness right before that first sip, when the citrus is at its most vivid.

Notes

Keeping the broth at a genuine gentle simmer through its full cook, never allowing it to boil hard at any point, deserves real respect as the technique this soup's clarity depends on entirely. A hard boil physically agitates the liquid enough to work fat and proteins directly into the broth — once that emulsification happens, no amount of subsequent skimming fully restores the clean, golden broth this dish is meant to have. The gentle simmer specified throughout protects that clarity for the entire multi-hour cook.
Staging the vegetable additions — corn, carrot, and potato first, chayote following, zucchini and cabbage only near the very end — reflects genuine attention to how differently each vegetable actually behaves under heat. Adding everything at once would force an impossible compromise, either leaving the denser vegetables undercooked or letting the more delicate ones collapse into mush by the time the others finally catch up.
Keeping every piece of beef and vegetable genuinely large, rather than finely diced, is worth understanding as a deliberate choice about this soup's whole character, not simply a matter of presentation. Caldo de res is meant to feel rustic and generous, with every component still clearly recognisable as itself in the finished bowl — smaller, finer pieces would push the dish toward something closer to a blended, homogenous soup rather than this specific, chunky, structured style.
Not removing all the surface fat when skimming, and instead leaving a modest amount of richness, is a small but genuine detail worth respecting. That surface fat contributes real satisfaction and body to the finished broth — over-skimming in pursuit of a leaner result would actually work against what makes this particular soup feel properly comforting and complete.