Quick Recipe Version (TL;DR)
Quick Ingredients
- 1.2 kg lamb shoulder, trimmed and cut into 3 cm chunks
- 3 tbsp plain yogurt
- 2 tbsp lemon juice (divided)
- 4 tbsp neutral oil or ghee (divided)
- 2 large onions, finely sliced
- 7 cloves garlic, minced (divided)
- 3 tbsp grated fresh ginger (divided)
- 2–3 green chilies, slit (optional)
- 2 tsp ground turmeric
- 3 tbsp ground coriander
- 1½ tbsp ground cumin
- 2–3 tsp Kashmiri chili powder (or mild chili powder), to taste
- 1 tsp smoked paprika (optional)
- 1 tsp fennel seeds
- 1 tsp black mustard seeds
- ½ tsp ground cinnamon
- ¼ tsp ground cloves
- 400 g can chopped tomatoes
- 2 tbsp tomato paste (tomato puree)
- 400 ml can full-fat coconut milk
- 240 ml water or lamb/beef stock
- 2 tbsp unsweetened desiccated coconut (optional)
- 2–3 tsp tamarind paste (to taste)
- 1 tsp light brown sugar
- 2–2½ tsp fine sea salt, to taste
- Fresh coriander (cilantro) and lemon wedges, to serve
Do This
- 1. Marinate lamb with yogurt, 1 tbsp lemon juice, 1 tsp turmeric, 1 tsp salt, 1 tbsp ginger, 3 cloves minced garlic; chill 30 minutes to overnight.
- 2. Brown lamb in 2 tbsp hot oil/ghee in a heavy pot in 2–3 batches; set browned lamb aside.
- 3. In same pot, soften onions in remaining 2 tbsp oil/ghee over medium-low heat 15–20 minutes until golden and caramelised.
- 4. Add remaining garlic, ginger, green chilies; cook 1–2 minutes. Add coriander, cumin, chili powder, smoked paprika, fennel and mustard seeds, cinnamon, cloves; fry 1–2 minutes until fragrant.
- 5. Stir in tomato paste, chopped tomatoes, desiccated coconut, coconut milk, water/stock, tamarind, sugar, and 1 tsp salt. Return lamb and any juices; bring to a gentle simmer.
- 6. Cover and simmer on low 60–75 minutes, then uncover and cook 15–20 minutes more until lamb is very tender and sauce is thick, glossy, and deeply red.
- 7. Adjust salt, chili, and tang with extra tamarind or lemon juice. Rest 10 minutes, garnish with coriander, and serve hot with basmati rice or naan.
Why You’ll Love This Recipe
- Deeply spiced and richly aromatic, with a slow-cooked tomato base and gentle coconut creaminess.
- Balanced heat: easily dial the spice level up or down without losing flavour.
- Perfect make-ahead curry; tastes even better the next day as the flavours meld.
- Comforting yet special enough for guests, especially with basmati rice and warm naan.
Grocery List
- Produce: Onions, garlic, fresh ginger, green chilies, fresh coriander (cilantro), lemons.
- Dairy: Plain yogurt, ghee (or use all neutral oil if preferred).
- Pantry: Lamb shoulder, neutral oil, canned chopped tomatoes, tomato paste, coconut milk, desiccated coconut, tamarind paste, light brown sugar, ground turmeric, ground coriander, ground cumin, Kashmiri or mild chili powder, smoked paprika, fennel seeds, black mustard seeds, ground cinnamon, ground cloves, fine sea salt, black pepper, basmati rice or naan (to serve).
Full Ingredients
Lamb & Marinade
- 1.2 kg lamb shoulder, trimmed and cut into roughly 3 cm cubes
- 3 tbsp plain yogurt (unsweetened, full-fat if possible)
- 1 tbsp lemon juice
- 1 tsp ground turmeric
- 1 tsp Kashmiri chili powder or mild chili powder
- 1 tsp fine sea salt
- 1 tbsp freshly grated ginger
- 3 cloves garlic, finely minced or crushed
Sauce Base
- 3 tbsp neutral oil or ghee (plus 1 tbsp more if needed)
- 2 large onions (about 400 g), finely sliced
- 4 cloves garlic, finely minced
- 2 tbsp freshly grated ginger
- 2–3 green chilies, slit lengthwise (optional, to taste)
Spices
- 3 tbsp ground coriander
- 1½ tbsp ground cumin
- 1–2 tsp Kashmiri chili powder (or mild chili powder), to taste
- 1 tsp smoked paprika (optional, for a deeper red colour and subtle smokiness)
- 1 tsp fennel seeds
- 1 tsp black mustard seeds
- ½ tsp ground turmeric
- ½ tsp ground cinnamon
- ¼ tsp ground cloves
- ½ tsp freshly ground black pepper
Tomato-Coconut Sauce
- 400 g can chopped tomatoes
- 2 tbsp tomato paste (tomato puree)
- 400 ml can full-fat coconut milk
- 240 ml water or lamb/beef stock (1 cup)
- 2 tbsp unsweetened desiccated coconut (optional, for extra body and coconut flavour)
- 2–3 tsp tamarind paste, to taste (start with 2 tsp)
- 1 tsp light brown sugar
- 1–1½ tsp fine sea salt, plus more to taste
To Finish & Serve
- 1 tbsp lemon juice (or more, to taste)
- Small handful fresh coriander (cilantro), roughly chopped
- Cooked basmati rice or warm naan, for serving
- Extra lemon wedges and sliced green chilies (optional, for the table)

Step-by-Step Instructions
Step 1: Marinate the lamb for deeper flavour
In a large bowl, combine the plain yogurt, 1 tbsp lemon juice, 1 tsp ground turmeric, 1 tsp Kashmiri chili powder, 1 tsp fine sea salt, 1 tbsp grated ginger, and 3 cloves minced garlic. Stir until you have a smooth, spiced marinade.
Add the lamb cubes and toss very well, making sure every piece is thoroughly coated. Cover the bowl and refrigerate for at least 30 minutes, preferably 2 hours. For maximum flavour and tenderness, you can marinate the lamb overnight. Remove from the fridge about 20 minutes before cooking to take off the chill.
Step 2: Brown the lamb
Heat 2 tbsp of the oil or ghee in a large, heavy-based pot or Dutch oven over medium-high heat. When hot and shimmering, add a single layer of lamb pieces, shaking off excess marinade (do not discard the marinade left in the bowl). Brown the lamb on 2–3 sides for about 5–7 minutes per batch, until nicely coloured. Avoid overcrowding; work in 2–3 batches if necessary.
Transfer browned lamb to a plate, leaving the fat and browned bits in the pot. If the bottom looks very dry or begins to scorch, add another 1 tbsp oil between batches and reduce the heat slightly.
Step 3: Slowly caramelise the onions
Reduce heat to medium-low. Add the remaining 1–2 tbsp oil or ghee to the pot if it looks dry. Add the sliced onions and a pinch of salt. Cook, stirring often, for 15–20 minutes until the onions turn soft, golden, and lightly caramelised. This slow cooking builds a rich, sweet base for the sauce, so do not rush this step.
If the onions start catching on the bottom, add 1–2 tbsp of water and scrape up any browned bits with a wooden spoon. Continue until the onions are soft and evenly golden.
Step 4: Add aromatics and bloom the spices
Stir in the remaining 4 cloves minced garlic, 2 tbsp grated ginger, and the slit green chilies (if using). Cook for 1–2 minutes, stirring constantly, until fragrant and the raw smell of garlic fades.
Add the spices: ground coriander, ground cumin, remaining Kashmiri chili powder, smoked paprika (if using), fennel seeds, mustard seeds, ½ tsp ground turmeric, ground cinnamon, ground cloves, and black pepper. Stir well and fry the spices for 1–2 minutes. If they stick or look dry, splash in 1–2 tbsp water. You should smell a warm, toasty aroma; this blooming step makes the curry deeply flavoured.
Step 5: Build the tomato-coconut sauce
Add the tomato paste and cook for 1 minute, stirring, until it darkens slightly. Then pour in the chopped tomatoes with their juices and stir, scraping up any browned bits from the bottom of the pot.
Stir in the desiccated coconut (if using), coconut milk, and water or stock. Mix until smooth and well combined. Add the browned lamb and any accumulated juices back to the pot, along with any remaining marinade from the bowl.
Season with 1–1½ tsp fine sea salt, 2 tsp tamarind paste, and 1 tsp light brown sugar. Stir thoroughly so the lamb is nestled into the sauce.
Step 6: Slow-cook until the lamb is tender
Bring the pot just up to a gentle simmer over medium heat. Once bubbling, reduce the heat to low so the curry gently blips rather than vigorously boils. Cover with a lid, leaving a small gap for steam to escape.
Simmer for 60–75 minutes, stirring occasionally, until the lamb is very tender when pierced with a fork. If the sauce seems too thick at any point and sticks to the bottom, add a splash of water and lower the heat.
Remove the lid and continue to simmer gently for another 15–20 minutes, stirring now and then, to thicken the sauce. You are aiming for a rich, deep red, glossy sauce that clings to the lamb, not a thin soup.
Step 7: Adjust, rest, and serve
Taste the sauce. Adjust salt if needed. For more heat, stir in a pinch more chili powder. For extra tang, add another teaspoon of tamarind paste or a squeeze of lemon juice. The flavours should be bold, slightly tangy, warmly spicy, and rounded by the coconut.
Turn off the heat and let the curry rest for 10 minutes; this allows the flavours to settle and the sauce to thicken a touch more. Sprinkle with chopped fresh coriander.
Serve hot over fluffy basmati rice or with warm naan. Offer extra lemon wedges and sliced green chilies at the table so everyone can tweak their own bowl.
Pro Tips
- Take time with the onions: Properly caramelised onions are the backbone of this curry. Keep the heat medium-low and be patient; pale onions equal less depth of flavour.
- Brown, do not steam, the lamb: Work in batches so the lamb sears and develops flavour instead of releasing liquid and boiling.
- Control the heat level: Use Kashmiri chili powder for a vivid red colour and gentle warmth. For a hotter curry, add a little regular chili powder or more green chilies.
- Adjust the tang at the end: Tamarind and lemon can vary in sharpness. Always taste and tweak just before serving so the acidity is bright but not harsh.
- Even better the next day: Like most curries, this lamb madras tastes richer after resting overnight in the fridge. Make it ahead when you can.
Variations
- Milder coconut lamb curry: Halve the chili powders and skip the green chilies. Add an extra 100–150 ml coconut milk at the end to soften the spices further.
- Slow cooker adaptation: Brown the lamb and cook the onions and spices on the stove as described, then transfer everything to a slow cooker. Cook on LOW for 6–8 hours or HIGH for 3–4 hours, until the lamb is tender and the sauce is rich.
- Different meats: Substitute lamb with beef chuck or stewing beef in the same quantity. Increase the covered simmer time by about 15–20 minutes, as beef can take a little longer to become tender.
Storage & Make-Ahead
Allow the lamb madras to cool to room temperature, then refrigerate in an airtight container for up to 3 days. Reheat gently on the stove over low heat, adding a splash of water if the sauce has thickened too much. This curry also freezes very well: portion into freezer-safe containers, label, and freeze for up to 3 months. Thaw overnight in the fridge before reheating. For entertaining, you can cook the curry completely a day in advance, chill, and reheat just before guests arrive; the flavours will be even more developed.
Nutrition (per serving)
Approximate values per serving (1/6 of the recipe, without rice or naan): about 620 kcal; 38 g protein; 44 g fat; 12 g carbohydrates; 3 g fibre; 4 g sugars; 780 mg sodium. Actual values will vary based on the exact cut of lamb, brand of coconut milk, and salt used.

