Place onions in the small bowl of a food processor. Add a little water and grind to a smooth paste. Transfer onion paste to a small bowl. Set aside.
Place ginger and garlic in the food processor. Add a little water and grind to a coarse paste. Set aside.
Heat a small frying pan over low heat. Add fennel and cumin seeds. Roast, stirring, for 2-3 minutes or until aromatic. Leave to cool. Place in a spice grinder or mortar and pestle and grind to a coarse powder.
Combine together fennel-cumin mix, ground coriander, ground turmeric, garam masala, paprika and red chili powder in a small bowl. Set aside.
Heat oil in a large casserole over medium-high heat. Stir fry cardamom, cloves and bay leaves for 1-2 minutes.
Add onion paste. Cook, stirring, for 1-2 minutes or until the raw smell disappears. Add ginger garlic paste. Cook, stirring, for 2 minutes or until fragrant.
Stir in spice mix. Cook for 1 minute or until aromatic. Add tomato paste and canned tomatoes. Cook, stirring often, for 1-2 minutes.
Add lamb. Season with salt. Cook, stirring occasionally, for 10 minutes. Stir yogurt into the curry. Cover lamb with 250 ml hot water. Bring to the boil.
Reduce heat to medium-low, and simmer, covered and stirring occasionally, for 30-40 minutes or until lamb is cooked through.
Sprinkle with chopped coriander and mint leaves. Serve with naan, roti or rice.