When I was a kid, my abuela used to fill the whole apartment with the smell of simmering beef and roasted tomatoes — it felt like a warm, edible hug every time. I remember the way she slid a steaming bowl of caldo de res across the table, steam fogging her glasses, and insisted I squeeze lime over the top until I made her laugh. That memory stuck with me, so I learned to make this soup the way she did: slow, simple, and full of love. This version keeps things approachable for weeknights but still delivers that deep, beefy broth and tender vegetables that make you feel instantly at home.
Quick Facts
- Yield: Serves 6
- Prep Time: 25 minutes
- Cook Time: 2 hours (simmer)
- Total Time: 145 minutes
Why This Recipe is Awesome
This caldo de res hits all the cozy notes: a rich, beefy broth, tender meat that falls off the bone, and colorful veggies that still hold some texture. It’s the kind of soup that smells incredible as it simmers — savory, slightly sweet from the carrots, and brightened by lime and cilantro. It’s comforting, forgiving, and so easy even a harried weeknight cook can pull it off. Plus, it doubles beautifully and freezes like a dream.
Ingredients
For the Main Dish:
- 3 lbs beef shank or bone-in chuck (about 48 oz; bones add flavor)
- 12 cups water (or a mix of 8 cups low-sodium beef broth + 4 cups water)
- 1 large yellow onion, halved
- 4 cloves garlic, smashed
- 2 medium tomatoes, quartered (or 8 oz canned crushed tomatoes)
- 2 bay leaves
- 1 tsp ground cumin
- 1 tbsp kosher salt, plus more to taste
- 1 tsp black pepper
- 4 large carrots, peeled and cut in half
- 3 medium russet potatoes, peeled and cut into large chunks
- 2 ears corn, each cut into 3 pieces
- 1 chayote (optional), peeled and quartered — or use 2 small zucchinis
- 1 cup green cabbage, sliced (optional)
- For serving: lime wedges, chopped cilantro, diced white onion, sliced radishes, warm tortillas or rice
For the Sauce / Garnish (if applicable):
- Simple salsa: 2 tbsp chopped cilantro, 1 small jalapeño minced, pinch of salt, juice of 1 lime — optional for topping
How I Make It
Step 1:
Heat a large stockpot over medium-high heat. Pat the beef dry and sear in batches for about 8–10 minutes until brown on all sides — you want those caramelized bits for deep flavor. I toss in a pinch of salt as it browns. You’ll hear a satisfying sizzle and smell that toasty, meaty aroma that makes the kitchen feel festive.
Step 2:
Pour in the 12 cups water (or broth/water mix) and scrape up browned bits. Add the onion, garlic, tomatoes, bay leaves, cumin, and a tablespoon of salt. Bring to a vigorous boil, then reduce to a low simmer. Skim any foam from the surface for a clearer broth. Tip: skim with a slotted spoon or ladle — it takes seconds and keeps the broth clean.
Step 3:
Cover and simmer gently for about 1.5 to 2 hours until the beef is tender and pulls away from the bone. The aroma will deepen into a roast-meets-broth perfume — rich and comforting. If you get busy, lower the heat; slow and steady builds flavor.
Step 4:
Add the carrots, potatoes, and corn. Simmer uncovered for another 25–30 minutes until the vegetables are tender but not mushy. If you’re using zucchini or cabbage, add them in the last 10 minutes so they stay bright and slightly crisp. Taste and adjust salt and pepper.
Step 5:
Remove the bay leaves and fish out any large bones if you plan to serve boneless. Spoon the soup into bowls, top with chopped cilantro, diced onion, a squeeze of lime, and sliced radishes if you like crunch. Serve with warm tortillas or a scoop of rice. The broth should glisten and smell irresistible — sip the spoonful first and smile.
Pro Tips
- Brown the meat well — those fond bits are flavor gold. Don’t rush this step.
- Salt gradually. Add some at the start, then finish seasoning after the veggies cook so you don’t over-salt.
- Use bone-in cuts for deeper flavor. If you only have boneless chuck, reduce simmer time by 20–30 minutes.
- Short on time? Use an Instant Pot: pressure cook on high for 45 minutes with natural release for the same tender results.
Common Mistakes to Avoid
- Skipping preheating: Classic rookie move. It changes texture and bake time.
- Overmixing: Leads to dense or chewy results. Mix until just combined.
- Guessing cook time: Always use visual cues or a timer, not just vibes.
- Overcrowding pans: Give your food some breathing room to crisp properly.
Alternatives & Substitutions
- Beef shank → boneless chuck: Chuck works well; expect slightly less gelatinous broth.
- Chayote → zucchini: Both add a mild, slightly sweet bite; zucchini cooks faster.
- Corn on the cob → frozen corn: Use 1.5 cups frozen corn added at the end for convenience.
- Dietary: This recipe is naturally dairy-free and gluten-free. For vegetarian, swap beef for hearty mushrooms and add white beans for protein (broth will change).
Variations & Tips
- Spicy: Add 1–2 chopped jalapeños or a chipotle in adobo for a smoky kick.
- Kid-friendly: Leave out jalapeños and serve with mild toppings like avocado and tortillas.
- Slow-cooker: Brown meat, then transfer to a slow cooker with ingredients and cook on low for 6–8 hours.
- Posole-ish twist: Add 2 cups cooked hominy for a heartier, rustic bowl.
- Herby bright: Stir in chopped epazote or extra cilantro at the end for a fresh lift.
- Creative twist: Roast the tomatoes and garlic first for a charred, smoky depth that makes the broth sing.
FAQ (Frequently Asked Questions)
- Can I make this ahead of time?
- Yes! Make the soup, cool to room temperature, then refrigerate for up to 3 days or freeze for up to 3 months. Reheat gently on the stove and bring leftovers to a rolling simmer, ensuring they reach 165°F for safe reheating.
- Can I double the recipe?
- Sure thing. Use a very large stockpot or split between two pots. Cooking time stays mostly the same, but bring to a boil a bit longer to ensure the center comes up to temperature before you reduce to a simmer.
- Can I substitute butter with oil?
- Technically yes, but you’ll miss that buttery magic. Use ¾ the amount of oil.
- How do I know it’s done?
- The beef should be tender and easily pull away from the bone, and the broth should taste rich and balanced. Vegetables should be fork-tender but not falling apart. Visual cues beat a clock here.
- What if I don’t have ingredient X?
- No panic. Swap chayote for zucchini, canned tomatoes for fresh, or corn on the cob for frozen corn. If you lack beef bones, use a stronger beef broth to boost flavor.
How I Like to Serve It
I love ladling this caldo into deep bowls and setting out little bowls of garnishes — lime wedges, cilantro, diced onion, and radishes — so everyone customizes their bowl. Serve with warm corn tortillas or a scoop of white rice. This works as a cozy weeknight dinner, a healing post-sick meal, or the star of a chilly weekend supper with friends.
Notes
- Store leftovers in an airtight container in the fridge for up to 3 days, or freeze for up to 3 months. Reheat to 165°F.
- For food safety, whole cuts of beef should reach at least 145°F when measured with a thermometer; for soups, focus on tenderness and reheating to safe temps.
Final Thoughts
Closing: Now go simmer something wonderful — spoon a bowl, squeeze a lime, and feel cozy. You’ve got this, and someone’s about to get very happily fed.

Hi, I’m Lina, the creator of Lina Easy Recipes.Cooking has always been my passion, and I love sharing simple, homemade dishes that anyone can prepare.
Love What You See?
Join me on Pinterest and Facebook for daily cooking inspiration, new recipe ideas, and behind-the-scenes kitchen stories. Let’s cook something wonderful together!








