Pour the milk into a small saucepan, add the saffron threads and heat gently for two minutes without boiling. Remove from the heat and set aside for 2-3 hours, preferably overnight.
Trim the beef of any hard fat and cut into bite-sized pieces. Heat two tablespoons of oil in the frying pan. Season the beef with salt and freshly ground black pepper and fry in 2-3 batches over a medium-high heat until browned on all sides. Transfer to a large, lidded saucepan.
While the beef is frying, roughly chop two of the onions and put in a food processor with the garlic, ginger and chillies. Add 50ml/2fl oz cold water and blend to a smooth paste.
Put the cloves, cumin, coriander, cinnamon, 1½ teaspoons salt and seeds from the cardamom pods into a pestle and mortar. Grind until a fine powder. Grate the nutmeg into the mixture and tip into the onion paste. Add plenty of freshly ground black pepper. Mix until all the ingredients are combined.
Add a further three tablspoons of oil into the same frying pan that was used to cook the beef and fry the spiced onion paste over a medium heat for around 10 minutes until lightly browned, stirring often. Place the mixture into the pan with the beef. Stir in the yoghurt, 450ml/16fl oz water and bay leaves. Place the pan over a low heat and bring to a gentle simmer. Cover with a lid and simmer gently for 1½ hours or until the beef is tender, stirring occasionally.
Remove the lid from the pan and stir in the sugar. Increase the heat and simmer the sauce for 10 minutes, or until reduced and thick. Add a little more salt and pepper to taste.
Toast the almonds in a non-stick frying pan and cook over a medium heat for 4-6 minutes. Stir the sultanas into the almonds and immediately tip into a heatproof bowl. Set aside to cool.
Cut the remaining two onions in half and slice thinly. Pour two tablespoons of oil into a frying pan and fry the onions for 6-8 minutes over a fairly high heat until softened and golden-brown, stirring frequently. Set aside.
Preheat the oven to 180C/350F/Gas 4.
Half-fill a large pan with water, add one teaspoon of salt and bring to the boil. Put the rice in a sieve and rinse under plenty of cold water. Stir the rice into the hot water and return to the boil. Cook for five minutes and drain well. Add the coriander and stir until well combined.
Transfer half the meat and sauce into a large, ovenproof dish. Spoon over half of the part-cooked rice and drizzle with half the soaked saffron threads and milk. Top with half the fried onions. Repeat the layers once more. Dot with the butter. Cover the dish with two layers of tightly fitting foil and bake for 30 minutes.
Hard-boil the eggs for nine minutes until firm and drain in a sieve under running water until cool enough to handle. Peel the eggs and cut into quarters.
Remove the dish from the oven and discard the foil. Use a fork to lightly fluff the rice. Garnish with the freshly boiled eggs, scatter with toasted almonds and sultanas. Add a few fresh coriander leaves and serve.