Soups & Stews
This beef and bean curry recipe delivers restaurant-quality depth in a single pot, where tender beef and hearty beans simmer in a rich, aromatic sauce. The secret lies in slow-browning the spices—cinnamon, cumin, and coriander—to unlock their full potential before adding tomatoes for a velvety base.
I’ve perfected this method over years of testing, ensuring the flavors meld without overpowering the natural richness of the beef and beans.
The beauty of this one-pot approach is its simplicity: no chopping vegetables into tiny pieces, no separate pans to clean. Instead, you’ll sear the beef in batches for maximum flavor, then let it braise alongside beans until fork-tender.
The sauce thickens naturally as it simmers, creating a balance of spice and sweetness that’s both comforting and complex. Perfect for weeknights or gatherings, this curry builds character as it cooks—just like the best homemade versions.
By the time you’re ready to serve, you’ll have a dish that’s deeply satisfying: tender beef, creamy beans, and a sauce so flavorful it coats every bite. The aroma alone will draw everyone to the table, and the texture—soft yet substantial—makes it a meal worth repeating.
Serve with steamed basmati rice or warm naan to soak up every last drop of that rich, spiced goodness.
This recipe scales effortlessly, so double it for leftovers or guests. The flavors actually improve the next day, making it ideal for meal prep. Whether you’re new to curries or a seasoned cook, the foolproof technique ensures success every time. Let’s get cooking—your taste buds will thank you.
Ingredients for beef and bean curry
One-pot magic starts with these 17 ingredients—spices, beans, and beef that transform into velvety curry.
| Ingredient | Amount | Notes |
|---|---|---|
| Chuck Roast 🥩 | 1 ½ lb | Cut into 1-inch cubes |
| Black Beans 🌱 | 1 can | Drained and rinsed |
| Pinto Beans 🌱 | 1 can | Drained and rinsed |
| Cinnamon 🌿 | 1 tsp | Ground, for depth |
| Ground Cumin 🌿 | 1 ½ tsp | Toasted for aroma |
| Ground Coriander 🌿 | 1 ½ tsp | Freshly ground preferred |
| Turmeric Powder 🌶️ | ½ tsp | For vibrant color |
| Garam Masala 🌶️ | 1 tsp | Warm, earthy finish |
| Onion 🧅 | 1 whole | Yellow, diced medium |
| Garlic Cloves 🧄 | 4 cloves | Minced for intensity |
| Tomatoes 🍅 | 1 can | San Marzano, crushed |
| Tomato Paste 🍅 | 2 tbsp | For rich base |
| Beef Broth 💧 | 1 cup | Low-sodium preferred |
| Extra-Virgin Olive Oil 🫒 | 2 tbsp | For searing beef |
| Salt 🧂 | 1 ½ tsp | Kosher or sea salt |
| Black Pepper 🌶️ | ½ tsp | Freshly ground |
| Coconut Milk 🥥 | 1 can | Full-fat for creaminess |
The beef is non-negotiable here—chuck roast gives you that melt-in-your-mouth texture, while sirloin stays tough. Most grocery stores carry pre-cubed chuck, but if you're buying a whole roast, ask the butcher to cut it for you. For the beans, black and pinto create the perfect balance of creaminess and texture. I grab mine from the bulk section at Trader Joe's—cheaper and fresher than canned. The spices? Penzeys has the best whole spices, but the regular grocery store ground versions work fine if they're fresh. Quick test: sniff your spices—if they smell like dust, toss them. The garlic and onion are your flavor anchors, so don't skimp on freshness here.
No San Marzano tomatoes? Any good-quality canned tomatoes work—just drain well. Short on tomato paste? Those little squeeze tubes from Trader Joe's are perfect for single-use portions. The coconut milk needs to be full-fat for that rich, creamy finish—Thai Kitchen is my go-to brand. For extra depth, toast your cumin and coriander in a dry pan for 30 seconds before adding them to the pot (trust me on this). Need a quicker version? Pre-made curry paste (like Maesri from the Asian aisle) cuts prep time in half—just add it with the spices. The garam masala is the secret weapon here—it ties everything together, so don't skip it.
This curry tastes even better the next day, so double the batch if you're feeding a crowd. Store leftovers in an airtight container for up to 5 days in the fridge, or freeze portions for 3 months. I always make extra because it reheats like a dream—just add a splash of water or broth if it's too thick. The sauce thickens as it cools, so if it's too watery when reheating, let it sit for 10 minutes before serving. Serve with steamed basmati rice or warm naan to soak up every last bit of that spiced goodness.
Why You'll Love This Recipe
- One-Pot Magic: I swear by this—dump everything in a single pot, walk away, and come back to actual flavor. The chuck roast practically falls apart on its own, and those beans? They soak up all the smoky cumin and warm cinnamon like sponges.
- Deep, Earthy Richness: That first bite of tender beef with the beans’ creamy texture? It’s like a hug in a bowl. The cinnamon and cumin don’t just hint at warmth—they sing, especially when you let the spices toast in the oil for just a minute before adding anything else.
- Lunchbox Army: Between us, this curry is my go-to for meal prep. I make a double batch on Sundays, and by Wednesday, I’m still digging into jars of it—over rice, in tortillas, or straight from the pot. The beans keep it hearty, so it never feels like leftovers.
- Budget Hero: Chuck roast on sale? Black and pinto beans in the pantry? This recipe turns cheap cuts into something ridiculously satisfying. I’ve fed six people for under $15 with this—no joke. Plus, it stretches for days, so your wallet and your fridge thank you.
Step-by-step instructions for beef and bean curry
This rich, aromatic curry comes together in one pot with minimal cleanup.
Sear the Chuck Roast for Deep Flavor
Heat the 2 tablespoons extra-virgin olive oil in a large Dutch oven over medium-high heat. Working in batches if needed, add the 1.5 lb chuck roast cut into 1-inch cubes, letting each piece sear undisturbed for 2-3 minutes until deeply browned on all sides. This step develops the rich, meaty foundation of your curry.
Once all the beef is browned, remove it from the pot and set it aside. Don't drain the rendered fat—it's packed with flavor that will form the base of your sauce. If the oil starts smoking too aggressively, reduce the heat slightly to medium and continue searing. The goal is to create a deep, caramelized crust on each piece of beef.
Build the Spice Base
In the same Dutch oven, add the 1 whole onion diced medium and cook for 5-6 minutes until softened and golden. Stir occasionally to prevent burning. Add the 4 cloves garlic cloves minced and cook for another 30 seconds until fragrant.
Now it's time to add the spices: 1.5 teaspoons ground cumin, 1.5 teaspoons ground coriander, 0.5 teaspoon turmeric powder, 1 teaspoon garam masala, 1 teaspoon cinnamon, 1.5 teaspoons salt, and 0.5 teaspoon black pepper. Stir constantly for 1-2 minutes until the spices release their aromatic oils and the mixture becomes fragrant. Be careful not to let the spices burn—they should smell warm and inviting, not bitter.
Develop the Sauce
Add the 2 tablespoons tomato paste and stir to combine with the spices. Cook for 1 minute until the paste darkens slightly. Pour in the 1 can crushed tomatoes and 1 cup beef broth, scraping up any browned bits from the bottom of the pot. Return the seared beef to the pot and bring everything to a gentle simmer.
Partially cover the pot and let the curry simmer for 45 minutes, stirring occasionally. You're looking for the beef to become tender enough to pierce with a fork. If the liquid reduces too much before the beef is tender, add 2-3 tablespoons water to maintain a sauce-like consistency. The curry should smell rich and complex, with layers of spice and meaty aroma.
Finish with Beans and Coconut Milk
After the beef is tender, stir in the 1 can drained and rinsed black beans and 1 can drained and rinsed pinto beans. Add the 1 can full-fat coconut milk and stir gently to combine. The coconut milk will create a creamy texture while keeping the dish balanced.
Continue simmering for another 10-15 minutes until the curry reaches your desired consistency. Taste and adjust seasoning if needed—you might want to add a pinch more salt or a dash of garam masala for extra depth. The curry should be rich, flavorful, and perfectly balanced between the spicy, creamy, and meaty elements.
Rest and Serve
Remove the curry from heat and let it rest for 5-10 minutes. This allows the flavors to meld together and the spices to infuse fully. Serve the curry hot, either over steamed rice or with warm naan bread. The curry should be thick enough to coat the back of a spoon but still have a nice, spoonable consistency.
Each bite should deliver tender beef, hearty beans, and a complex blend of spices balanced by the creaminess of the coconut milk. The one-pot method makes this curry incredibly convenient while delivering restaurant-quality depth of flavor. Enjoy immediately while it's hot and fragrant!
Pro Tips For Making Beef And Bean Curry
- SEAR THE ROAST FIRST: Chuck roast releases more flavor when browned deeply before simmering—don’t skimp on the 8-10 minutes of high-heat searing in oil. I used to toss it in after everything else, and the curry tasted flat until I realized the meat needed that initial crust to carry the spices.
- SOAK BEANS HALF-DAY: Drain and rinse black and pinto beans after a 6-8 hour soak (or overnight) to cut cooking time and prevent gummy texture. My grandmother swore by this, and she was right: the beans stay tender without falling apart, and the curry thickens naturally as they break down.
- LOW AND SLOW WINS: After browning, reduce heat to a bare simmer (180°F/82°C) and let the curry cook uncovered for 2-3 hours—this isn’t a rushed dish. I learned this the hard way when I cranked the heat to speed things up and ended up with rubbery meat and split beans.
- TOAST SPICES SEPARATELY: Bloom cumin and cinnamon in oil for 30 seconds before adding liquids—this unlocks their aroma without burning. Sounds weird, but it works: the curry smells like a spice market instead of just "curry." (Yes, even if you’re impatient like me.)
Pro cooking tips for perfect results
Sear in Batches
Never crowd the pan when searing the beef—this is where most home cooks go wrong. Work in batches of 2-3 minutes per side over medium-high heat to get that deep golden crust. I use a 12-inch cast-iron skillet for this step, but a Dutch oven works too.
The rendered fat from the beef becomes the flavor base, so don’t drain it! If your oil gets too hot and starts smoking, reduce to medium heat immediately to avoid burning the spices later. 🔥
Toast Your Spices
Before adding the spices to the onions, toast the cumin and coriander in a dry skillet for 30 seconds until fragrant. This simple step unlocks their essential oils, making the whole curry taste more vibrant.
I like to use a small stainless steel skillet for this—it heats up quickly and distributes heat evenly. Add the spices to the onions right after toasting while they’re still warm.
Pro tip: If you’re short on time, 1 tsp of pre-made curry powder (like Badia) works in a pinch, but toasting whole spices is worth the effort. 🌿
Control the Simmer
The key to tender beef is a gentle, consistent simmer—not a rolling boil. After adding the tomatoes and broth, reduce the heat to low-medium and maintain a bare simmer. If the curry boils vigorously, the beef will toughen instead of tenderize.
I check the consistency every 10 minutes—if it’s too thick, add 2 tbsp water or broth. The goal is a sauce that coats the back of a spoon but isn’t gluey. Use a wooden spoon to stir gently and avoid breaking up the beef. ⏰
Beans Last
Adding the beans in the final 10-15 minutes ensures they absorb the rich flavors without turning mushy. If you add them too early, they’ll disintegrate into the sauce. I like to mash a few beans lightly with a fork before adding them—this thickens the curry naturally.
For extra texture, stir in ½ cup frozen peas in the last 5 minutes of cooking. The contrast of soft beef, hearty beans, and bright peas makes this curry even more dynamic. 💫
Coconut Milk Trick
Don’t stir the coconut milk too vigorously—gentle folds prevent curdling. I use a spoon to swirl it in from the center outward to blend smoothly. If the curry separates slightly, just simmer for another 2-3 minutes—the heat will re-emulsify it.
For a smoother texture, strain the curry through a fine-mesh sieve before serving, but I find the slight chunkiness adds character. A splash of lime juice at the end brightens the flavors if you like a touch of acidity. 🥥
Rest Before Serving
Letting the curry rest for 5-10 minutes off the heat is non-negotiable. This step allows the spices to bloom fully and the sauce to thicken slightly. I cover the pot loosely with a lid to trap heat while letting steam escape.
The flavors will deepen, and the beef will absorb even more of the aromatic sauce. Serve immediately over steamed basmati rice** or with warm naan to soak up every last drop. Leftovers taste even better the next day—just reheat gently with a splash of water. ✨
Nutrition facts
Frequently asked questions about beef and bean curry
Can I substitute ground beef for chuck roast?
Yes, but the texture will differ. Ground beef will cook faster and create a more tender result, but it lacks the rich, melt-in-your-mouth quality of slow-cooked chuck. For best results, use 80/20 ground chuck and reduce the simmering time to 20-25 minutes after adding the beans. The fat content helps create a deeper flavor, but expect a slightly different mouthfeel.
How can I make this curry spicier?
Add ½ teaspoon cayenne pepper or 1 teaspoon red pepper flakes when toasting the spices, or stir in 1-2 tablespoons of hot sauce during the final 5 minutes of cooking. For a smoky kick, add ½ teaspoon smoked paprika with the other spices. Always taste as you go—you can adjust heat levels at the end with fresh chili or a dash of Sriracha.
What if I don’t have coconut milk?
Use ½ cup heavy cream or ½ cup Greek yogurt for richness, but the texture will be lighter. For a dairy-free alternative, blend ½ cup cashews soaked in hot water until smooth. The curry will still be flavorful, though coconut milk’s unique sweetness and creaminess are hard to replace. If using yogurt, stir it in at the very end to prevent curdling.
Can I make this curry in an Instant Pot?
Sear the beef in a skillet first, then transfer to the Instant Pot with all ingredients except the coconut milk. Cook on High Pressure for 20 minutes, then quick-release. Stir in the coconut milk and simmer on Low Heat for 5 minutes to blend. The pressure cooker cuts total time to 30 minutes, but the flavors develop just as deeply. Just be sure to add the beans in the last 10 minutes to avoid mushiness.
Why did my curry turn out too watery?
This usually happens when the beef isn’t fully tender or the sauce hasn’t reduced enough. Simmer uncovered for an extra 10-15 minutes to thicken, stirring occasionally. If it’s still too thin, mix 1 tablespoon cornstarch with 2 tablespoons water, stir into the curry, and simmer for 2-3 minutes until it thickens. For next time, reduce the broth by ¼ cup or add 1 extra tablespoon tomato paste to help bind the sauce.
