Blend the shallots, ginger, lemongrass, lime leaves, garlic, red chillies and 5 tablespoons water to a paste in a food processor. Scoop the mixture out into a large bowl and add the beef, mixing well until the meat is coated in the paste. Cover and set aside to marinate for at least 2 hours, and preferably overnight in the fridge.
Put the dried chillies into a bowl and cover with boiling water from the kettle. Set aside for 30 minutes to soften.
Heat the oil in a casserole over a medium heat. Add the cardamom, star anise, cinnamon, ground cumin and ground coriander and stir the spices into the oil until fragrant.
Add the marinated beef and stir well to coat it in the spices.
Add all of the remaining ingredients except the lime juice (and the rice) and bring the mixture to the boil. Reduce the heat until the mixture is simmering.
Drain the dried chillies, reserving the soaking water, and chop them finely. Add the chillies and 50ml/2fl oz of the soaking water to the casserole and stir well. Cover with a lid and simmer for 2 hours, or until the beef is tender.
Remove the lid and stir the curry, then simmer for a further 15-20 minutes, or until the sauce has thickened. Stir in the lime juice and season, to taste, with salt and freshly ground black pepper.