Trim the lamb of excess fat, cut into I-inch pieces, and set aside in a large bowl.
Combine all the marinade ingredients in a small bowl, adding a little water as necessary to make a paste. Add to the meat and mix well to coat the meat. Set aside to marinate for an hour or so (if it’s more convenient, marinate the meat for up to 12 hours, covered and refrigerated).
Heat the oil in a wide heavy pot over medium-high heat. Toss in the cinnamon, cloves, and cardamom and stir-fry briefly, then add the onions and stir-fry until softened, about 8 minutes, adding the chiles after the first few minutes.
Lower the heat to medium, add the garlic and ginger, and stir-fry for 2 to 3 minutes, until a little softened. Add the meat and any excess marinade and turn and stir over medium to medium-low heat until all the surfaces have been exposed to the heat, about 6 minutes. The meat may stick a little; just loosen it from the bottom of the pan.
Transfer to a serving bowl, sprinkle on the coriander leaves or mint, and serve hot. Put out lime wedges so guests can add a tart note as they eat.