Heat the oil in a large pan over a medium heat. Add the black peppercorns, black and green cardamom pods, cloves, cinnamon and mace and fry for 1-2 minutes, or until the spices are sizzling and fragrant.
Add the chopped onion and fry for 8-10 minutes, stirring regularly, until golden-brown.
Add the lamb pieces and fry for 3-4 minutes, stirring continually, until golden-brown all over.
Meanwhile, in a food processor, blend the garlic cloves and ginger with one tablespoon of water to a fine paste.
Add the garlic and ginger paste to the lamb mixture, stir well to combine, then reduce the heat and continue to cook for 3-4 minutes, stirring regularly.
Stir in the powdered coriander, cumin, red chilli powder, fennel seeds, garam masala, salt, tomato pulp and yoghurt, cover the pan with a lid, then reduce the heat to a low heat and simmer for 10-12 minutes, or until the sauce has almost completely dried out.
Add 2-3 tablespoons of boiling water to the sauce, stir well and simmer for a further 7-8 minutes, stirring continually and adding splashes of water as necessary, until the volume of liquid has reduced and the sauce has thickened.
Add enough boiling water to almost cover the lamb, bring the mixture to the boil, then reduce the heat to a simmer and simmer or 8-10 minutes, or until the lamb is cooked through.
Stir in the chopped coriander just before serving.