Preheat the oven to 375°F (190°C). Bring a large pot of water to a boil, add the onions, bring the water back to a boil and cook for 10 minutes. Drain well, reserving 11⁄4 cups of the water, then leave the onions to cool.
Put the sultanas and bulgur into a heatproof bowl. Pour in the hot onion water and soak for 20 minutes until the water is absorbed. Drain if necessary.
Meanwhile, slice off the top 1 cm of each onion. Scoop out the centre of each onion. Finely chop the onion lids, centres and the garlic.
Heat the oil in a non-stick frying pan over a medium heat. Add the lamb and fry for 5 minutes, stirring frequently, until the meat is lightly coloured.
Push the lamb to one side, reduce the heat and add the spices. Stir-fry for 20 seconds, then add the onion mixture and cook for 1 minute. Stir in the lamb and cook over a medium heat for 10 minutes. Stir in the bulgur mixture.
Sit the onions in a large, lightly greased roasting pan and fill with the lamb mixture. Cover with foil and bake for 20 minutes, then uncover and bake for a further 10 minutes. Serve immediately.
Variation: Large beefsteak tomatoes can be filled with the same mixture. Slice a lid off each tomato (allow 2 per serving) and scoop out the seeds and core. The tomatoes do not need to be cooked in boiling water. Chop the cores and add to the lamb mixture with 1 finely chopped onion.
Per serving: 445 calories, 18 g fat (7 g saturated), 32 g protein, 36.5 g carbohydrates, 8 g fibre