Soups & Stews
This beef and bean curry recipe transforms tough cuts of beef into tender, aromatic bites swimming in a rich, spiced tomato base. The secret lies in slow-cooked layers of umami—caramelized onions, deep-roasted spices, and the natural sweetness of beans—all balanced with just enough acidity to brighten the dish.
I developed this version after years of testing, ensuring every spoonful delivers that perfect harmony of heat, depth, and comfort.
The beauty of this curry is its versatility—equally at home on a weeknight dinner table or as the centerpiece of a weekend feast.
You'll start with a dry rub of warm spices that tenderizes the beef while building complex aromatics, then simmer everything in a tomato-based sauce until the meat practically melts off the bone.
The beans add heartiness and texture, while a final touch of yogurt or cream at the end creates that signature velvety finish.
What makes this recipe stand out is the professional-level flavor development without requiring advanced techniques. A 30-minute prep followed by 2 hours of slow simmering (or 20 minutes in a pressure cooker) ensures deep flavor without constant attention.
The result? A curry so rich and satisfying that it rivals restaurant versions, but with the flexibility to adjust spice levels and ingredients to your taste.
Serve it with basmati rice for soaking up every last drop of sauce, or pair with warm naan for the full experience. The leftovers actually taste better the next day as flavors meld further—this is the kind of dish that becomes a household staple. Let's get cooking!
Ingredients for beef and bean curry
Sixteen ingredients for a curry that transforms tough beef into restaurant-quality bites.
| Ingredient | Amount | Notes |
|---|---|---|
| Chuck Roast 🥩 | 2 lb | Cut into 1.5-inch cubes, trimmed of fat |
| Yellow Onions 🧅 | 2 whole | Thinly sliced, caramelized for depth |
| Garlic Cloves 🧄 | 6 cloves | Minced, for aromatic base |
| Canned San Marzano Tomatoes 🍅 | 2 cans | 28 oz each, crushed by hand |
| Kidney Beans 🌽 | 1 ½ cups | Drained, rinsed, or cooked fresh |
| Ground Cumin 🌿 | 1 tbsp | Toasted for deeper aroma |
| Ground Coriander 🌶️ | 1 tbsp | Freshly ground preferred |
| Turmeric Powder 🌿 | 1 tsp | For vibrant color and earthiness |
| Garam Masala 🌶️ | 1 ½ tsp | Store-bought or homemade blend |
| Cayenne Pepper 🔥 | ½ tsp | Adjust for desired heat level |
| Extra-Virgin Olive Oil 🫒 | ½ cup | For searing and deglazing |
| Beef Broth 💧 | 1 ½ cups | Low-sodium preferred |
| Plain Greek Yogurt 🥛 | ¼ cup | Full-fat for creaminess |
| Fresh Cilantro 🌿 | ¼ cup | Chopped, for garnish |
| Diamond Crystal Kosher Salt 🧂 | 1 ½ tsp | For seasoning and balancing |
The chuck roast is the foundation—its connective tissue breaks down during slow cooking to create a silky, rich sauce. Look for well-marbled cuts at your butcher or grocery store's meat counter, as fat renders out during cooking for extra flavor. I prefer Costco or Whole Foods for their consistent quality, but any reputable market will do. For the tomatoes, San Marzano is non-negotiable—their sweetness and low acidity make all the difference in balancing the spices. If you can't find them, Muir Glen is a solid second choice. The onions should be yellow or white; red onions add color but can make the sauce too acidic. Caramelize them thoroughly—this step builds the base flavor that carries through the entire dish.
No garam masala? Mix equal parts ground cumin, coriander, cinnamon, and cardamom for a quick substitute. The kidney beans can be swapped for black beans or pinto beans—just adjust the cooking time slightly as they vary in firmness. Running short on beef broth? Vegetable broth with a splash of soy sauce works surprisingly well. For the yogurt, full-fat Greek yogurt is ideal, but coconut yogurt adds a subtle sweetness that pairs beautifully with the spices. The cilantro is optional but adds a bright finish—if you dislike it, skip it or use parsley instead. For extra depth, toast the cumin and coriander in a dry pan for 30 seconds before adding to the spices—this enhances their aroma significantly.
This curry develops even better the next day as flavors meld, so plan ahead. Store in an airtight container in the fridge for up to 5 days or freeze for 3 months. The sauce thickens as it cools, so add a splash of water or broth when reheating. For serving, I recommend jasmine rice or basmati rice—both absorb the sauce beautifully. Garnish with extra cilantro and a drizzle of extra-virgin olive oil just before serving to elevate the presentation. The leftovers reheat perfectly—simmer gently on the stove or microwave with a splash of water to restore creaminess.
Why You'll Love This Recipe
- One-Pot Magic: I swear by this recipe when I’m too tired to scrub pots—chuck roast and onions brown in the same pot, then the tomatoes and beans melt into a thick, fragrant sauce. No extra dishes, no stress.
- Deep Umami Bomb: That chuck roast? Slow-cooked until it practically falls apart, then simmered with garlic and San Marzano tomatoes—it’s got this rich, meaty depth that just hits. The kidney beans soak up all the flavor like little sponges.
- Meal Prep MVP: Make a big batch on Sunday, and you’ve got lunch all week. It reheats beautifully, whether you’re packing it for work or serving it to friends who “just dropped by.” (Yes, even on a Tuesday night.)
- Budget-Friendly Powerhouse: Chuck roast is cheap, canned beans are a steal, and a single can of tomatoes stretches into three servings. This curry feeds four for under $10—without sacrificing taste. My wallet thanks me every time.
Step-by-step instructions for beef and bean curry
Master this technique and you'll create a rich, aromatic curry with perfect texture and balanced spice.
Sear the Chuck Roast for Deep Flavor
Heat the 0.5 cup extra-virgin olive oil in a heavy Dutch oven over medium-high heat until shimmering. Add the 2 lb chuck roast, cut into 1.5-inch cubes, in a single layer and let it sear undisturbed for 3-4 minutes per side until deeply browned. This step develops the Maillard reaction, creating complex flavors that form the foundation of your curry.
Work in batches if needed to avoid crowding the pan, which would steam the meat instead of searing. Once all pieces are browned, transfer them to a plate and set aside. You'll notice the oil will darken significantly—this is normal and indicates proper caramelization. Don't drain the oil; we'll use it to build the sauce.
Build the Spiced Tomato Base
In the same Dutch oven, reduce heat to medium and add the 2 whole yellow onions, sliced thinly. Cook for 8-10 minutes, stirring occasionally, until softened and beginning to caramelize—this should take longer than you might expect, but patience here creates depth of flavor. Add the 6 cloves garlic cloves, minced, and cook for an additional 1 minute until fragrant.
Stir in the 1 tbsp ground cumin, 1 tbsp ground coriander, 1 tsp turmeric powder, 1.5 tsp garam masala, and 0.5 tsp cayenne pepper. Toast the spices for 30 seconds until aromatic—you'll smell the warm, earthy notes developing. Immediately add the 2 cans crushed San Marzano tomatoes and 1.5 cups beef broth, scraping up any browned bits from the bottom of the pan.
Simmer the Curry Until Tender
Return the seared chuck roast to the Dutch oven and bring the mixture to a gentle simmer. Partially cover with a lid and cook for 1 hour 30 minutes, stirring occasionally, until the beef is fork-tender and easily pulls apart. The sauce should reduce slightly, coating the meat and creating a thick, velvety consistency.
Check for seasoning after 45 minutes of cooking. Taste and adjust with the 1.5 tsp diamond crystal kosher salt if needed—this is when you'll really appreciate the quality of your ingredients. The curry should have a rich, complex flavor with layers of spice and umami. If it's too thick, add 2-3 tablespoons water to reach your desired consistency.
Incorporate Beans and Finish
Add the 1.5 cups kidney beans (drained if canned) to the curry and simmer for an additional 10-15 minutes until heated through. The beans will absorb the flavors from the meat and sauce, adding texture and substance. Stir gently to distribute them evenly throughout the curry.
Reduce heat to low and stir in the 0.25 cup plain Greek yogurt, mixing until smooth and creamy. This step adds a cooling element that balances the heat from the cayenne and deepens the overall flavor profile. Let the curry sit off heat for 5 minutes to allow the yogurt to fully incorporate and the flavors to meld.
Serve with Fresh Garnish
Transfer the curry to a serving bowl and garnish with the 0.25 cup fresh cilantro, chopped. The bright, citrusy notes of the cilantro cut through the richness of the curry, adding freshness and visual appeal. Serve immediately with steamed basmati rice or warm naan bread to soak up the flavorful sauce.
Each bite should deliver tender beef, hearty beans, and a complex blend of spices with a velvety texture. The yogurt adds a subtle tang that elevates the dish, making this curry both comforting and sophisticated. For best results, serve while the curry is still warm, as the flavors continue to develop even after cooking.
Pro Tips For Making Beef And Bean Curry
- Sear the Chuck Roast: Chuck roast loves a good crust, but don’t crowd the pan—cut it into 1.5-inch chunks and work in batches if needed. High heat for 3-4 minutes per side until deep brown, then pull it out and set aside. I used to skip this, and the curry always tasted flat.
- Crush the Tomatoes: Drain those San Marzano tomatoes but don’t skip crushing them with your hands or a wooden spoon. You want pulp, not just juice—this thickens the sauce faster and adds body. I learned this the hard way when my curry turned watery mid-cook.
- Salt the Beans: Rinse the kidney beans first, then add them to the pot with a pinch of salt (about ¼ teaspoon). This keeps them from absorbing too much liquid later and turning mushy. I ignored this for years—now I add them early and let them simmer quietly.
- Simmer Low and Slow: After everything’s in the pot, reduce heat to a bare simmer—just enough to see tiny bubbles at the edges. Chuck roast needs 2-2.5 hours to break down, and rushing it makes the meat tough. I used to walk away too soon, then wondered why the texture was off.
Wine and beer pairings for this dish
Red Wine Pairings
For this rich, spiced curry, I always reach for a medium-bodied red wine with enough structure to stand up to the depth of flavors. A Syrah from the Rhône Valley—like Guigal Côtes du Rhône—is my go-to choice.
Its dark fruit notes and subtle spice complement the beef beautifully while the earthy undertones mirror the curry's complexity. 🍷
If you prefer something lighter, a Pinot Noir from Oregon (such as Domaine Serene) offers bright acidity that cuts through the richness. Avoid heavy, oaky wines—they'll overwhelm the dish's delicate balance.
I've also enjoyed a Malbec from Argentina, particularly Catena Zapata, which brings a juicy, slightly smoky profile that pairs wonderfully with the charred spices.
Crisp White Options
Don't dismiss whites entirely—this curry works beautifully with a dry, aromatic white that can stand up to the spices. A Viognier from Condrieu (like Yvon Mouton) offers floral notes and a touch of sweetness that harmonize with the yogurt finish.
For something more affordable, a Sauvignon Blanc from New Zealand (such as Oyster Bay) provides zesty acidity that refreshes the palate between bites.
Beer Pairings
For beer lovers, a Belgian-style witbier like Hoegaarden is a fantastic match. Its citrusy coriander notes and subtle spice bridge the gap between the curry's warmth and the yogurt's coolness.
I also love pairing this dish with a German Helles Lager (such as Weihenstephaner Original), which offers a clean, crisp profile that cleanses the palate without competing with the dish.
Avoid heavy stouts or IPAs—they'll clash with the curry's delicate balance. Instead, opt for a light amber ale with a touch of malt sweetness, like Allagash White, which complements the dish's richness without overpowering it. 🍺
Non-Alcoholic Options
For a refreshing non-alcoholic pairing, I recommend a sparkling ginger beer (like Feather's Ginger Beer) with a squeeze of lime. The effervescence cuts through the richness, while the ginger's warmth enhances the curry's spices.
A cucumber-mint infused water with a splash of lime also works beautifully, providing a crisp, cooling contrast to the hearty dish.
For something more substantial, try a spiced chai tea served warm. The cinnamon and cardamom notes echo the garam masala in the curry, creating a cohesive flavor experience that feels intentional and satisfying.
Nutrition facts
Frequently asked questions
Can I substitute ground beef for chuck roast in this recipe?
You can, but the texture and flavor will differ. Ground beef cooks much faster and won't develop the same tender, melt-in-your-mouth quality. If you must substitute, use 80/20 ground beef and reduce cooking time to 30-45 minutes to avoid drying it out. The fat content helps create richness, but expect a slightly different mouthfeel. For best results, stick with chuck roast for that signature slow-cooked tenderness.
How do I adjust the spice level for kids or sensitive palates?
Start by reducing the cayenne pepper to ¼ tsp or omitting it entirely. For extra mildness, add ½ cup coconut milk at the end to smooth out any remaining heat. You can also serve the yogurt separately on the side so kids can add it to their portion—this helps cool the spices without altering the main dish. Always taste as you go!
What's the best way to thicken this curry if it's too thin?
Simmer uncovered for 5-10 minutes to reduce the liquid naturally. If that's not enough, stir in 1 tablespoon cornstarch mixed with 2 tablespoons water and cook for 2 minutes until thickened. For a more traditional approach, mash some of the cooked beans against the pot's side to release starch. Avoid over-thickening—you want a sauce that coats the meat, not a paste.
Can I make this curry in a slow cooker or Instant Pot?
For a slow cooker, brown the meat first, then transfer everything to the pot and cook on low for 6-7 hours or high for 3-4 hours. For Instant Pot, use the high pressure setting for 40 minutes after browning. The beans will soften more quickly in pressure cooking, so add them in the last 5 minutes of cooking. Both methods work beautifully—just adjust cooking times based on your equipment.
Why did my curry turn out too acidic?
This usually happens when using regular canned tomatoes instead of San Marzano or when overcooking. Balance the acidity by adding 1 tablespoon sugar or ½ cup coconut milk to sweeten the sauce. For future batches, use high-quality tomatoes and avoid over-simmering. The yogurt at the end also helps neutralize acidity—just
