Heat 50 ml of the oil in a large frying pan over medium-high heat and cook the onion for 6–8 minutes, or until golden.
Add the lamb, garlic and 1 tablespoon salt and cook until lamb is well browned on all sides, about 8–10 minutes.
Add the water, reduce heat to low and cook, skimming surface occasionally until lamb is tender, about 1½ hours. Remove lamb from pan and set aside. Reserve the stock.
Place half of the sugar in a hot, dry saucepan over medium heat. Cook, shaking pan, for 5–6 minutes or until sugar has caramelized.
Add a cup of reserved stock, the remaining salt, 1 teaspoon garam masala and a pinch of cardamom. Bring to the boil, then remove from heat and set aside.
Drain the soaked rice and cook in a large saucepan of boiling water until almost cooked, about 5 minutes. Drain and return to pan.
Pour over the caramelized sugar mixture, add a pinch of garam masala and cardamom, and stir until rice is evenly coated.
Heat 1 tablespoon of the oil in a frying pan over medium-high heat.
Add the carrot and remaining sugar and stir for 5 minutes, or until lightly caramelized and glossy.
Add the sultanas and cook for another 1 minute. Remove from the heat and stir in another pinch of cardamom. Set aside.
Heat the remaining oil in a frying pan until smoking.
Pour oil over the rice.
Using the end of a large spoon, make holes all over rice to allow it to steam evenly. Top with spiced carrot and reserved lamb.
Cover and seal pan with a tea towel, then a lid.
Place the pan over high heat and cook for 5 minutes.