Put the onion in a blender or food processor, add 2 tablespoons water and, process to make a paste. Set aside.
Put the yoghurt in a bowl, add the fried onion paste, cashew nut paste, ground coriander, turmeric, and yellow chilli powder, then season with salt, whisk to combine and, set aside.
Put the saffron threads in a mortar or spice grinder and crush with a pestle or process until crushed. Put the milk in a small bowl, add the crushed saffron and stir to make a paste. Set aside.
Heat the ghee or oil in a heavy-based pan over medium heat, add the whole spices, and stir-fry for about 1 minute, or until the cardamom changes color. Add the pureed onions and fry for about 1-2 minutes, or until translucent. Add the ginger and garlic pastes and stir-fry for about 2-3 minutes, or until the moisture has evaporated.
Remove from the heat, stir in the yoghurt mixture, then return to the heat and stir-fry for about 3-4 minutes, or until the oil separates out.
Add the vegetable stock and bring to a boil. Remove from the heat and pass the sauce through fine muslin (cheesecloth) or a fine sieve (strainer) into a separate pan.
Return the sauce to the heat, bring to the boil, add the paneer, reduce the heat, and simmer, stirring occasionally, for 10 minutes, or until the sauce is a thin consistency.
Sprinkle over the ground spices and stir gently, then add the cream and the reserved saffron paste and serve immediately.