Soups & Stews
This beef arroz caldo recipe brings the comforting warmth of Filipino home cooking to your table, where tender beef and fragrant coconut-lime broth create a dish that's both nourishing and deeply satisfying.
The secret lies in simmering beef bones and meat until the broth develops a rich, savory depth while keeping the rice silky and separate—no mushy textures here. I've perfected this version after years of testing, ensuring every spoonful delivers that perfect balance of coconut creaminess and bright citrus notes.
The beauty of arroz caldo is its versatility—traditionally made with beef, but pork or chicken work beautifully too. What sets this recipe apart is the two-stage cooking process: first building the broth with ginger, garlic, and spices, then gently cooking the beef separately before combining everything with jasmine rice.
This method preserves the integrity of each component while allowing flavors to meld perfectly. The result is a steaming bowl of comfort that's as elegant as it is simple.
What you'll achieve is restaurant-quality arroz caldo with tender beef chunks, fragrant coconut-lime broth, and perfectly cooked rice that stays separate yet infused with flavor. The aroma alone—warm spices, coconut milk, and fresh lime—will have everyone gathering around the table.
This dish isn't just food; it's a taste of home, whether you're serving it for a family dinner or a special gathering.
Ready to make this dish your new go-to? The process is straightforward but requires patience—worth every minute for that perfect bowl of Filipino comfort. Let's get started with the ingredients you'll need to create this heartwarming classic.
Ingredients for beef arroz caldo
These 15 ingredients create the heart of Filipino home cooking—rich, fragrant, and full of comfort.
| Ingredient | Amount | Notes |
|---|---|---|
| Beef Chuck Roast 🥩 | 2 lb | Cut into 1.5-inch cubes |
| Beef Bones 🦴 | 1 ½ lb | Marrow bones preferred |
| Jasmine Rice 🍚 | 1 ½ cups | Uncooked, long-grain |
| Coconut Milk 🥥 | 13 ½ oz | Full-fat, canned |
| Lime Juice 🍋 | ½ cup | Freshly squeezed |
| Ginger Root 🌿 | 2 tbsp | Freshly grated |
| Garlic Cloves 🧄 | 8 cloves | Minced |
| Onion 🧅 | 1 whole | Yellow, chopped |
| Bay Leaves 🌿 | 2 whole | Dried |
| Salt 🧂 | 2 tsp | Kosher or sea |
| Black Peppercorns 🌶️ | 1 tsp | Crushed |
| Ground White Pepper 🌶️ | ½ tsp | Traditional for arroz caldo |
| Sugar 🍚 | 1 tbsp | White granulated |
| Fish Sauce 🍶 | 1 tbsp | Red Boat preferred |
| Vegetable Oil 🫒 | 2 tbsp | For searing |
The beef is everything here—chuck roast for tender chunks and marrow bones for that unmistakable depth of flavor. Costco or your local butcher are great spots for both. Look for bones with good marrow—those little red pockets inside are flavor gold. If you can't find marrow bones, substitute with beef shank bones (just add 30 minutes to the simmer time). The coconut milk should be full-fat—Aroy-D or Thai Kitchen are my go-tos, but any canned brand works. Fresh ginger and garlic? Trader Joe's usually has pre-peeled garlic cloves, which saves time.
No fish sauce? Soy sauce at half the amount works in a pinch, though the flavor will be different. Running low on lime juice? Lemon juice works too, but the dish loses that bright Filipino tang. The jasmine rice—don't substitute with basmati or long-grain white—this recipe demands its floral aroma. For the pepper, white peppercorn is traditional, but black works fine if that's what you've got. The sugar balances the acidity—brown sugar adds molasses notes, so stick with white unless you're going for a different vibe.
This broth gets better with time—make a double batch and freeze half for next week. The rice stays perfect for 3 days in the fridge, though the broth flavor deepens overnight. For serving, I like to keep the beef and rice separate until right before eating—just stir everything together when you're ready. The bones? Save them—they're perfect for next time.
Why You'll Love This Recipe
- Slow-Cooker Magic: I swear by this recipe when I don’t want to stand at the stove for hours. Toss everything in—beef chuck, bones, even the jasmine rice—and let the pressure cooker do the work. The bones melt into the rice, turning it into a rich, velvety broth without any extra effort.
- Umami Bomb: That beef chuck roast? It breaks down into tender, melt-in-your-mouth shreds, while the beef bones add a deep, savory depth. The coconut milk rounds it out, but it’s the lime juice at the end that ties everything together—bright, tangy, and so satisfying.
- Leftovers That Shine: This dish actually tastes better the next day. Honestly, I make a double batch on Sundays because reheating it warms up the flavors even more. Packed with protein and carbs, it’s my go-to for lunches—no sad, dry leftovers here.
- Budget-Friendly Feast: Beef chuck roast and bones are affordable, and a single pot serves a crowd. The coconut milk adds richness without breaking the bank, and jasmine rice stretches the meal further. It’s the kind of dish where you end up with seconds, but your wallet stays happy.
Step-by-step instructions for beef arroz caldo
Here's how to create a rich, aromatic beef broth that transforms simple rice into something extraordinary.
🔥 Step 1: Sear the Beef and Bones for Deep Flavor
Heat a large Dutch oven over medium-high heat and add the 2 tablespoons vegetable oil. Working in batches, sear the 2 lb beef chuck roast cut into 1.5-inch cubes until deep golden brown on all sides—about 4-5 minutes per batch. Transfer the seared beef to a plate and set aside.
In the same pot, add the 1.5 lb beef bones and sear them for 5-6 minutes until they develop a rich brown crust. This caramelization creates layers of flavor that will infuse your broth. Don't rush this step—the deeper the color, the more complex the taste. Once browned, transfer the bones to the same plate with the beef.
🍳 Step 2: Build the Aromatic Base
Add the 1 whole chopped onion to the Dutch oven and cook for 3-4 minutes until softened and beginning to caramelize. Stir in the 8 minced garlic cloves and 2 tablespoons freshly grated ginger root, cooking for another 1 minute until fragrant and lightly golden.
Real talk: This is where the magic happens. The combination of onion, garlic, and ginger forms the aromatic foundation of your arroz caldo. If the garlic starts to burn (it happens fast), remove the pot from heat for 30 seconds to cool slightly before continuing. Add the 2 whole bay leaves and let them toast gently for 30 seconds to release their earthy notes.
🥘 Step 3: Simmer the Broth with Beef and Bones
Return the seared beef and bones to the Dutch oven. Pour in 8 cups water (enough to cover the ingredients by about 2 inches) and bring to a boil. Once boiling, reduce heat to low and skim off any foam that rises to the surface—this ensures a clear, clean broth.
Add the 2 teaspoons salt, 1 teaspoon crushed black peppercorns, ½ teaspoon ground white pepper, 1 tablespoon sugar, and 1 tablespoon fish sauce. The sugar balances the acidity from the lime later, while the fish sauce adds umami depth. Cover and simmer for 2 hours, maintaining a gentle simmer—not a rolling boil—to prevent the broth from becoming cloudy.
⏰ Step 4: Add Rice and Coconut-Lime Infusion
After 2 hours, add the 1.5 cups jasmine rice and the 13.5 oz coconut milk. Stir gently to combine, then add the ½ cup freshly squeezed lime juice. The lime brightens the rich flavors and cuts through the coconut's creaminess. Taste the broth and adjust seasoning if needed—you might need a touch more salt or fish sauce to balance the acidity.
Here's the thing—don't stir the rice constantly. Let it absorb the broth naturally. Simmer uncovered for another 15-20 minutes until the rice is tender and the liquid has reduced slightly, creating a silky texture. The rice should be cooked through but still have a slight bite—jasmine rice absorbs flavors beautifully when cooked this way.
🍽️ Step 5: Rest and Serve with Confidence
Once the rice is tender, remove the Dutch oven from heat and let it rest for 10 minutes. This resting period allows the rice to finish absorbing any remaining liquid and the flavors to meld completely. Discard the bay leaves before serving.
Ladle the arroz caldo into bowls, making sure each serving gets a generous portion of rice and broth. The result should be a fragrant, creamy dish where every bite delivers tender beef, silky rice, and a harmonious blend of coconut and lime. Serve immediately while the broth is steaming and the aromas are at their peak—this dish tastes best fresh from the pot!
Pro Tips For Making Beef Arroz Caldo
- Sear the Bones First: Blast those beef bones in a hot pot for 3-4 minutes until they turn deep brown—this isn’t just for looks. The Maillard reaction kicks off flavor that’ll seep into the broth for hours, making your arroz caldo taste richer than store-bought. (Yes, even if you’re tempted to skip it.)
- Use Two Coconut Milks: Light coconut milk (1 can) for creaminess, full-fat (1 can) for depth—mix them in the last 20 minutes of cooking. The lighter one blends smoothly, while the full-fat adds that luxurious body without curdling. (I learned this after a lumpy, sad batch.)
- Don’t Rush the Rice: Soak jasmine rice for 30 minutes before cooking, then rinse until the water runs clear. This cuts down on gummy rice and lets the grains absorb the broth like a sponge. (Your future self will curse you if you skip this.)
- Save the Lime for Last: Squeeze lime juice over the finished dish—just before serving—so the acid doesn’t turn the broth cloudy or dull the flavors. A few drops brighten every bite, but add it too early, and you’ll regret the watery, sad result. (I know, I’ve done it.)
Health benefits of this beef arroz caldo
Immune-Boosting Broth
The beef broth in arroz caldo is a natural immune booster, packed with gelatin from collagen-rich bones that supports gut health and joint function. The 2-hour simmer extracts minerals like calcium and magnesium from the bones, while the ginger and garlic add anti-inflammatory properties.
I've noticed my family recovers faster from colds when we eat this regularly. The coconut milk provides healthy fats that help absorb fat-soluble vitamins from the broth. 💪
Protein-Rich Comfort
This dish delivers high-quality protein from both the beef and rice, making it perfect for muscle recovery or post-workout meals. A single serving provides about 30 grams of protein, which helps keep you full and satisfied for hours.
The combination of beef and rice creates a complete protein profile, containing all nine essential amino acids your body needs. It's my go-to meal when I need energy without heavy carbs.
Coconut's Healthy Fats
The 13.5 oz coconut milk adds medium-chain triglycerides (MCTs) that provide quick energy and support brain function. These healthy fats also help with nutrient absorption from the other ingredients. Unlike heavy cream, coconut milk is lower in saturated fat but still delivers rich, creamy texture.
I prefer full-fat for authentic flavor, but light coconut milk works if you're watching calories.
Digestive Benefits
The ginger in arroz caldo aids digestion and reduces nausea, while the lime juice provides vitamin C that enhances iron absorption from the beef. The broth's gentle nature makes it easy to digest, perfect for when you're feeling under the weather.
I always make extra when someone's sick—it's like liquid comfort. The jasmine rice is gentle on the stomach, making this dish ideal for all-day eating. 🌿
Low-Calorie Comfort
Despite its rich flavors, arroz caldo is surprisingly light—about 350-400 calories per serving depending on portion size. The combination of lean beef, broth, and rice creates a satisfying meal without excessive calories.
It's my secret weapon for comfort food that doesn't leave me feeling sluggish. The lime juice adds refreshing acidity that helps balance the meal's richness while keeping calories in check.
Vitamin C Boost
The ½ cup lime juice provides a significant vitamin C boost, supporting skin health and immune function. Fresh lime juice contains about 50% more vitamin C than bottled versions. This citrus component also helps break down proteins in the beef, making them easier to digest.
I always use fresh limes because the flavor difference is noticeable—it's worth the extra squeeze. 🍋
Nutrition facts
Frequently asked questions
Can I make this arroz caldo with chicken or pork instead of beef?
This dish is incredibly versatile. For pork, use 1.5 lb pork shoulder and 1 lb pork bones (simmer for 1.5 hours instead of 2). For chicken, swap in 2 lb chicken thighs and 1 lb chicken bones, reducing simmer time to 1 hour. The coconut-lime broth works beautifully with any protein—just adjust cooking times to ensure tenderness.
Why does my arroz caldo broth turn cloudy?
Cloudy broth usually means the liquid boiled too vigorously or wasn't skimmed properly. For crystal-clear broth, always simmer gently (small bubbles, not rolling boil) and skim foam for the first 10 minutes. If it's already cloudy, strain it through a fine-mesh sieve before adding rice—this removes impurities while keeping flavor intact.
Can I prepare this ahead of time?
Yes! Make the broth 1 day ahead and store it in the fridge (discard bones before refrigerating). Reheat gently before adding rice. The rice should always be cooked fresh—15-20 minutes before serving—to maintain its perfect texture. For meal prep, cook the beef separately and assemble everything when ready to eat for maximum flavor.
What's the secret to keeping the rice separate from the broth?
Don't over-stir! After adding rice, stir only once to distribute it evenly. Let it cook undisturbed for 15-20 minutes—this allows the rice to absorb broth while staying distinct. For extra separation, use a rice cooker on the "white rice" setting after adding broth ingredients. The gentle heat prevents mushiness while keeping flavors intact.
How do I make this dish vegetarian?
Replace beef with 1 lb mushrooms (shiitake or oyster) and 1 block firm tofu (pressed and cubed). Use 4 cups vegetable broth instead of water, and add 1 tbsp soy sauce for umami. The coconut-lime base remains the same—just reduce simmer time to 45 minutes after adding rice. For extra protein, stir in ½ cup cooked lentils at the end.
