Preheat the oven to 140°C.
Toast cumin and coriander seeds in a dry pan until they change colour.
Grind toasted spices with ginger, garlic, and a little water into a fine paste.
Heat oil in a large oven-proof casserole dish.
Brown the whole lamb shoulder on all sides to seal it.
Remove lamb and add cinnamon, cardamom, cloves, peppercorns, and dried chillies to the pan.
Fry spices for 2 minutes and deglaze the pan with water.
Add onions and cook until soft and liquid evaporates.
Mix in the spice paste and cook for 6 minutes before returning the lamb.
Coat the lamb in the mixture, season with salt and pepper, and cover.
Bake in the oven for 2 to 2.5 hours, stirring occasionally.
Add chopped tomatoes and bake for another 15 minutes.
Ensure meat is soft and retracting from the bone.
Remove lamb from the dish and let cool slightly.
Discard whole spices from the gravy.
Shred the meat off the bone and return it to the casserole gravy.
Cook on medium-low heat until the gravy thickens.
Stir in fresh coriander and spoon mixture into an oven-proof dish.
Boil potatoes in a saucepan until tender.
Drain and heat the potatoes briefly to remove excess moisture.
Pass potatoes through a ricer or mash into a smooth puree.
Finely chop butter with cumin seeds.
Fry the cumin butter until the seeds colour slightly.
Add the cumin seeds to the mashed potatoes.
Fry garlic and dried chilli in the remaining butter for one minute.
Toss spinach in the garlic butter until soft and spread over the lamb.
Mix eggs and cream into the potatoes until smooth.
Spread the potato mixture evenly over the spinach.
Bake at 140°C for 10 minutes, then at 180°C for 15 minutes until brown.
Serve with crusty bread or rice.