To make the marinade, combine the ingredients with a large pinch of salt in a large bowl. Toss in the lamb, cover and marinate for 1 hr at room temperature, or chill overnight.
For the sauce, heat the oil in a flameproof casserole and fry the onions for 10 mins, stirring until soft and golden. Drizzle in more oil if the pan gets dry. Add the curry leaves and chillies and fry for a few minutes, then add the spices and cook for 5 mins more until the onions start to caramelise.
Tip in the lamb along with the marinade and turn the heat to high. Cook, stirring, for 5 mins until the lamb browns. Add the tomato purée and cook for 1 min, then stir in the tomatoes and 100ml water. Bring to a simmer, reduce the heat, cover and cook, stirring now and then, for 1 hr 20 mins until the lamb is tender.
Uncover and cook for 8-10 mins more until the sauce has reduced and thickened. Remove from the heat, stir in the garam marsala and season. Will keep chilled for up to three days or frozen for two months.