Caldo de Res, which means beef soup, is a traditional Mexican dish that’s both hearty and comforting. With tender beef and vegetables simmered in a light yet flavorful broth, it’s the kind of soup that feels nourishing in every way. I first learned to make it from my mom, and now it’s become a Sunday tradition in my own home, filling the kitchen with warmth and memories.
Love More Soup Recipes? Try My French Onion Soup or this Italian Sausage Potato Soup next.

Why You’ll Love This Recipe
The rich aroma of Caldo de Res fills the kitchen and draws everyone to the table. Simmered beef bones create a deeply flavorful broth, while tender vegetables make it hearty, nourishing, and satisfying. Even picky eaters can’t resist, and it has a way of lifting moods and bringing the whole family together.
Print
Caldo de Res
- Total Time: 1 hour 20 minutes
- Yield: About 10 cups
Description
Traditional Mexican beef soup featuring bone-in beef shanks, fresh corn, russet potatoes, zucchini, yellow squash, cabbage, and Roma tomatoes simmered in aromatic broth with onions, garlic, and cilantro. Served in rustic bowls with lime wedges and warm tortillas on the side.
Ingredients
For the Broth Base:
- 10 cups water, divided
- 2½ lb beef (bone-in shanks and roast)
- 1 onion, quartered
- 2 garlic cloves
- 1 bay leaf
- 1 tablespoon salt
For the Vegetables:
- 1 medium zucchini, chopped
- 1 medium yellow squash, chopped
- 2 small russet potatoes, chopped
- 2 Roma tomatoes, chopped
- ¼ large cabbage, chopped
- 2 ears of corn, cut in half
- Handful of fresh cilantro
- 4 oz tomato sauce
Instructions
Hack the roast into chunks about the size of golf balls. Leave shanks alone – they’re perfect as is. Don’t worry about making them pretty. Rustic chunks taste better anyway.
I learned to pat the meat dry first. Rosa showed me this trick. Wet meat doesn’t brown as well if you decide to sear it first, though this recipe doesn’t require browning.
Toss everything in the pot – 8 cups water, onion pieces, garlic cloves, bay leaf, salt, all the meat. Put heat on high. Cover with a tight lid. Wait for big bubbles, takes about 15 minutes depending on your stove.
My stove runs hot so it’s usually 12 minutes for me. You’ll hear it before you see it – that rumbling sound when water really starts boiling. Don’t peek too much or you’ll let out all the steam.
Turn down to medium heat. Let it bubble gently for exactly 20 minutes. Fish out those shanks with tongs or a big spoon. Cut meat off bones with a sharp knife – be careful, it’s hot. Put meat chunks back in the pot. Put bones back in too.
This step used to frustrate me because the meat would be falling off and I’d make a mess. Now I just do it right over the pot and let the pieces fall where they want. Less cleanup, same result.
Dump in everything else – zucchini, yellow squash, potatoes, tomatoes, cabbage, corn halves, cilantro, tomato sauce. Don’t stir too much or you’ll break up the vegetables. Cover and simmer exactly 30 minutes. Test potatoes with a fork – they should slide off easily when done.
I add the corn last because it cooks fastest. Sometimes I forget and it gets mushy, but my kids actually prefer it that way. Sofia calls it “corn butter” when it gets really soft.
Notes
Scoop out the gray foam that floats to the top in the first 10 minutes – makes the broth clearer and tastier
Keep heat at medium only or the meat gets tough and chewy
Cut everything roughly the same size so it cooks evenly
Fresh herbs always go in last
Don’t lift the lid too much – you lose steam and heat
- Prep Time: 15 minutes
- Cook Time: 65 minutes
- Category: Soup
- Method: Simmering
- Cuisine: Mexican
Ingredient List
For the Broth Base:
- 10 cups water, divided
- 2½ lb beef (bone-in shanks and roast)
- 1 onion, quartered
- 2 garlic cloves
- 1 bay leaf
- 1 tablespoon salt
For the Vegetables:
- 1 medium zucchini, chopped
- 1 medium yellow squash, chopped
- 2 small russet potatoes, chopped
- 2 Roma tomatoes, chopped
- ¼ large cabbage, chopped
- 2 ears of corn, cut in half
- Handful of fresh cilantro
- 4 oz tomato sauce
Substitutions I’ve made:
- Store was out of shanks so I used oxtail once – tasted even better but took longer
- Frozen corn when fresh looked terrible at the market
- Carrots instead of yellow squash when my kids were going through their “no yellow food” phase
- Sometimes I throw in green beans if I have them sitting in the fridge
Why These Ingredients Work
My neighbor Rosa from Mexico City explained it to me one afternoon over coffee. The bones cook slow and release all their good stuff – collagen, marrow, flavor. That’s why restaurant soup tastes different than home soup. They use bones.
The vegetables aren’t random either. My mom taught me each one has a job. Potatoes fill you up and make it hearty. Corn adds that little bit of sweetness that balances the beef. Cabbage gets all silky and soft, almost melting into the broth. Tomatoes keep it from being too heavy and rich.
I learned the hard way that you can’t skip the cilantro. My first attempt without it tasted flat. Rosa laughed when I told her and said “Mija, cilantro is the soul of the soup.” She was right.
The bone-in shanks are non-negotiable if you can find them. Regular stew meat just doesn’t give you that deep, rich flavor. I drive to three different stores sometimes to find good shanks. The butcher at Costco knows me now – he saves them when he gets good ones.
Essential Tools and Equipment
- Big pot (6 quarts minimum) – learned this the hard way when soup overflowed
- Sharp knife for chopping – dull knives make you cry more than onions
- Cutting board
- Ladle that reaches the bottom
- Fork to test doneness
- Slotted spoon for fishing out bones
How To Make Caldo de Res
Step 1: Prep Your Beef
Hack the roast into chunks about the size of golf balls. Leave shanks alone – they’re perfect as is. Don’t worry about making them pretty. Rustic chunks taste better anyway.
I learned to pat the meat dry first. Rosa showed me this trick. Wet meat doesn’t brown as well if you decide to sear it first, though this recipe doesn’t require browning.
Step 2: Build That Base
Toss everything in the pot – 8 cups water, onion pieces, garlic cloves, bay leaf, salt, all the meat. Put heat on high. Cover with a tight lid. Wait for big bubbles, takes about 15 minutes depending on your stove.
My stove runs hot so it’s usually 12 minutes for me. You’ll hear it before you see it – that rumbling sound when water really starts boiling. Don’t peek too much or you’ll let out all the steam.
Step 3: The Magic Simmer
Turn down to medium heat. Let it bubble gently for exactly 20 minutes. Fish out those shanks with tongs or a big spoon. Cut meat off bones with a sharp knife – be careful, it’s hot. Put meat chunks back in the pot. Put bones back in too.
This step used to frustrate me because the meat would be falling off and I’d make a mess. Now I just do it right over the pot and let the pieces fall where they want. Less cleanup, same result.
Step 4: Veggie Party Time
Dump in everything else – zucchini, yellow squash, potatoes, tomatoes, cabbage, corn halves, cilantro, tomato sauce. Don’t stir too much or you’ll break up the vegetables. Cover and simmer exactly 30 minutes. Test potatoes with a fork – they should slide off easily when done.
I add the corn last because it cooks fastest. Sometimes I forget and it gets mushy, but my kids actually prefer it that way. Sofia calls it “corn butter” when it gets really soft.

You Must Know
Keep those bones in the pot the entire time. They’re working even after you remove the meat. I made the mistake of throwing them away once – the soup tasted like dishwater. Never again.
Taste your broth after 20 minutes. Every cut of beef is different. Some needs more salt, some less. I usually add another half teaspoon, but start small. You can always add more but you can’t take it out.
Personal Secret: I add the cilantro with exactly 5 minutes left on the timer. Any longer and it gets brown and sad looking. Any shorter and it doesn’t have time to flavor the broth.
Pro Tips & Cooking Hacks
- Scoop out the gray foam that floats to the top in the first 10 minutes – makes the broth clearer and tastier
- Keep heat at medium only or the meat gets tough and chewy
- Cut everything roughly the same size so it cooks evenly
- Fresh herbs always go in last
- Don’t lift the lid too much – you lose steam and heat
Here’s something I figured out by accident – if you’re running late, you can prep all the vegetables the night before and keep them in the fridge. Just dump them in when it’s time. Saves about 15 minutes of prep.
If your broth tastes too salty, add a peeled potato and let it cook for 10 minutes. It absorbs some of the salt. Remove it before serving. My mom taught me this trick when I oversalted a pot once.
Flavor Variations
- Throw in a whole jalapeño with the onions for gentle heat – remove seeds if you’re scared
- One chipotle pepper in adobo sauce makes it smoky and amazing
- Add green beans or carrots if you want more vegetables
- Fresh oregano is beautiful if you have it growing
- Some people add chayote squash but I’ve never found it at my store
I tried adding lime juice once but it made the soup taste weird. Save the lime for squeezing on top when you serve it.
Make-Ahead Options
I cook this every Sunday afternoon and we eat it until Wednesday. Gets better every single day as the flavors marry together. The vegetables get softer but my kids prefer it that way anyway.
You can make it completely up to 3 days ahead. Just store it covered in the refrigerator. The fat will solidify on top – scrape it off if you want, but I usually leave it because it adds flavor.
For freezing, I learned to freeze the broth with meat separate from the vegetables. The texture of frozen and thawed vegetables is not great – they get mushy and sad. But the broth freezes beautifully for up to 3 months.
When I’m feeling ambitious, I make double batches. One for eating now, one for the freezer. Future me always thanks present me.
Recipe Notes & Baker’s Tips
The beef should literally fall apart when you touch it with a fork. If it’s still tough after an hour, keep cooking. Some cuts take longer than others.
If your vegetables are turning to complete mush, add them in stages next time. Potatoes and corn first since they take longest, then squash and tomatoes in the last 15 minutes.
My broth always looks thin when it’s hot but thickens up as it cools. Don’t panic and try to thicken it with flour or cornstarch – it’s supposed to be brothy, not thick like stew.
Sometimes the broth gets cloudy instead of clear. Usually means the heat was too high. Still tastes great, just doesn’t look as pretty. Lower the heat next time.
Serving Suggestions
I serve this in the biggest bowls I own with lime wedges and warm tortillas on the side. My family puts chopped white onions and extra cilantro on top. Keep hot sauce nearby for the heat lovers.
This is perfect for Sunday family dinners when everyone’s home. Also great when someone’s feeling sick – it’s like medicine in a bowl. My mom made it for me every time I had a cold growing up.
I like to put all the garnishes in little bowls so everyone can customize their own bowl. Makes it feel special and restaurant-like.
Some people serve it with rice mixed in but I think that makes it too heavy. The soup is perfect as is.
How to Store Your Caldo de Res
Store covered in the refrigerator for up to 4 days. The fat will rise to the top and solidify – you can scrape it off or leave it for flavor.
Freezes for 3 months but remember what I said about freezing vegetables separately.
To reheat, warm it gently over medium-low heat. Stir occasionally and add a splash of water if it seems too thick. Don’t boil it hard or the meat will get tough.
I sometimes freeze individual portions in mason jars for quick lunches. Leave room at the top because liquid expands when frozen. Learned that the hard way when I cracked three jars in one night.
Allergy Information
This recipe is naturally gluten-free and dairy-free. No common allergens unless your tomato sauce has weird additives. I always read labels because some brands add things you wouldn’t expect.
For people avoiding nightshades, you can skip the tomatoes and tomato sauce. The soup won’t have that slight red color but will still taste amazing.
Questions I Get Asked A Lot
What’s the difference between this and regular beef soup?
The bones and the specific vegetables make it authentic Mexican Caldo de Res. Also the way it’s cooked – slow and low with lots of love. American beef soup is usually thicker and has different seasonings.
My broth tastes bland. What did I do wrong?
Probably not enough salt or you skipped the bones. Bones are essential for deep flavor. Also make sure you’re simmering long enough – flavors need time to develop.
My store never has beef shanks. What else works?
Short ribs are perfect. Oxtail is even better if you can find it. Chuck roast works but cook it an extra 30 minutes. Regular stew meat is okay but won’t give you that rich flavor.
Can kids eat this?
My kids love it! Start them young. The vegetables are soft and the broth is mild. You can always serve hot sauce on the side for adults who want heat.
💬 Tried this recipe? Leave a comment and rating below!



