This aromatic beef dish features tender chunks slowly simmered in a rich, spiced tomato-based gravy. The beef becomes fork-tender after nearly two hours of gentle cooking, absorbing layers of warm spices including cumin, coriander, turmeric, and garam masala. The tomato base creates a luscious, thickened sauce that clings beautifully to every piece. A touch of yogurt stirred in near the end adds subtle creaminess and balances the heat from green chilies. This hearty preparation delivers authentic Indian restaurant flavors to your home kitchen, perfect when served over fluffy basmati rice or alongside warm naan for soaking up every drop of the velvety gravy.
The smell of whole cumin seeds hitting hot oil still transports me back to my friend Priya's tiny kitchen in Mumbai, where I first learned that patience is the real secret to authentic curry. We spent three hours that evening just talking and stirring, her explaining how each spice needs its moment to bloom while I scribbled notes on a crumpled receipt.
Last winter, during a particularly brutal snowstorm, I made a double batch for neighbors who'd just welcomed a new baby. They texted me hours later saying the house smelled incredible and they'd already fought over the last serving, which is basically the highest compliment a home cook can receive.
Ingredients
- 800 g (1.75 lbs) beef chuck: Chuck has this perfect marbling that breaks down beautifully during long simmering, becoming fork-tender while still holding its shape
- 2 tablespoons vegetable oil: You need a neutral oil here so the spices stay the star of the show
- 2 medium onions: I used to rush this step but taking the time to caramelize them properly makes all the difference in depth
- 4 garlic cloves and 1 tablespoon fresh ginger: This aromatic base is non-negotiable for that authentic Indian flavor profile
- 2 green chilies: Leave them whole if you want mild heat, sliced if you're feeling brave
- 400 g (14 oz) ripe tomatoes: Fresh tomatoes break down into the most silky gravy, though canned work in a pinch
- 1 teaspoon cumin seeds: Whole spices toasted in oil release these incredible oils you just can't get from ground versions
- 1 tablespoon ground coriander: Adds this lovely citrusy undertone that balances the beef's richness
- 1 teaspoon ground turmeric: Besides that gorgeous golden color, it brings this subtle earthiness
- 1 teaspoon chili powder and 1 teaspoon paprika: Together they give you color and heat without overwhelming the other spices
- 1 teaspoon garam masala: This is the finishing touch that makes everything taste complete
- 2 teaspoons salt and 1 teaspoon black pepper: Don't be shy with seasoning, the beef can handle it
- 2 bay leaves, 4 whole cloves, 1 cinnamon stick: These whole spices perfume the oil at the start, infusing every layer
- 250 ml (1 cup) beef or chicken stock: Homemade is ideal, but a good quality stock works perfectly
- 100 ml (1/2 cup) water: Helps create the right consistency as everything simmers together
- 120 ml (1/2 cup) plain yogurt: Stirred in at the end, it adds this creamy tang that cuts through the richness
- Fresh cilantro and lemon wedges: That final bright element that makes the whole dish sing
Instructions
- Wake up the spices:
- Heat your oil in a large heavy-bottomed pot over medium heat, then add the cumin seeds, bay leaves, cloves, and cinnamon stick, letting them sizzle for about a minute until your kitchen fills with this incredible toasty fragrance
- Build the foundation:
- Add those chopped onions and cook them slowly, stirring often, until they turn this deep golden brown color that takes about 8 minutes of patient attention
- Add the aromatics:
- Stir in the garlic, ginger, and green chilies, cooking for just 2 minutes until the raw garlic smell mellows into something warm and inviting
- Toast the ground spices:
- Dump in all your ground spices—coriander, turmeric, chili powder, garam masala, ground cumin, paprika, salt, and pepper—stirring constantly for 1 minute so they bloom in the hot oil without burning
- Brown the beef:
- Add the beef cubes and let them sear, turning them occasionally so they develop this nice brown crust on all sides, which takes about 5 minutes
- Introduce the tomatoes:
- Stir in your chopped tomatoes and cook for 5 minutes until they break down and start looking saucy, creating the base for your gravy
- Start the simmer:
- Pour in the stock and water, bring everything to a bubble, then lower the heat, cover it up, and let it gently simmer for an hour, giving it a stir now and then
- Add the creamy finish:
- Remove the lid and stir in the yogurt, letting it simmer uncovered for another 20 to 30 minutes until the beef is falling-apart tender and the sauce has thickened into this rich, velvety gravy
- Final touches:
- Taste it and add more salt or pepper if needed, then fish out those whole spices before serving
- Serve it up:
- Sprinkle with fresh cilantro and serve it hot alongside basmati rice or warm naan, with lemon wedges on the table for squeezing over
My brother-in-law, who claims he doesn't like curry, went back for thirds the first time I made this for Sunday dinner. Seeing someone change their mind about a dish they'd written off—that's the magic of really good food.
Making It Your Own
I've started adding a tablespoon of tomato paste along with the fresh tomatoes, and it gives the gravy this extra depth that people always ask about. If you like things spicy, try increasing the chili powder or throwing in an extra green chili.
Perfecting The Texture
The key to that restaurant-quality gravy is letting it cook uncovered after adding the yogurt. This allows excess liquid to evaporate while the sauce concentrates into something velvety and rich that coats every piece of beef.
Meal Prep Magic
This curry actually improves overnight as the spices meld and deepen, making it perfect for meal prep or feeding a crowd. I always make a double batch and portion some for the freezer.
- Let the curry cool completely before refrigerating to prevent condensation from thinning the sauce
- Store rice separately and reheat gently with a splash of water to restore the creamy texture
- Freeze in portions for those nights when you want something incredible but don't want to cook
There's something deeply satisfying about serving this curry, watching people's eyes light up as they take that first bite. Good food brings people together, and this dish has a way of doing that beautifully.
Recipe Questions & Answers
- → What cut of beef works best for this curry?
-
Chuck is ideal because its marbling keeps the meat tender during long simmering. The connective tissue breaks down beautifully, creating melt-in-your-mouth texture while adding richness to the gravy.
- → Can I make this in a slow cooker?
-
Absolutely. Brown the beef and aromatics first on the stovetop, then transfer everything to your slow cooker. Cook on low for 6-8 hours or high for 4-5 hours until the beef is fork-tender.
- → How do I adjust the spice level?
-
Reduce the chili powder and omit the green chilies for a milder version. For more heat, increase the chili powder or add a split serrano pepper. The yogurt also helps temper spiciness naturally.
- → Why add yogurt at the end instead of the beginning?
-
Adding yogurt after the main cooking time prevents it from separating or curdling. It also keeps the dairy proteins intact, contributing to a smoother, creamier finished sauce.
- → Can I prepare this ahead of time?
-
This dish actually improves overnight. The flavors meld and deepen, making it perfect for meal prep. Store in the refrigerator for up to 3 days or freeze for up to 3 months.
- → What can I substitute for the yogurt?
-
Coconut yogurt works beautifully for a dairy-free version while maintaining creaminess. Coconut cream also adds richness, though it will subtly alter the flavor profile.