Warm up the heavy cream in the microwave for a few seconds. Take few saffron strands, crush and add to the warm cream. Mix and keep it aside.
Now take onion paste ingredients (onion, ginger, garlic, green chili, cloves, cinnamon and cardamoms, and water) in a saucepan. Turn the heat on medium. Let it cook for 8-10 minutes or till the onions become soft. Let it cool down.
Now make three kinds of purees in the following order: First, make cashew paste. Then grind cooked onion into a fine paste and then grind roughly chopped tomatoes into a puree.
Heat the ghee in a pan on medium heat. Once hot, add prepared onion paste. Cook with stirring occasionally till it comes thick. It may take around 5-6 minutes.
Now add tomato puree and salt. Mix, cook till all the moisture evaporated and it becomes a thick paste. So stir in between and make sure that it is not sticking to the sides and bottom of the pan. If it is spluttering too much then you can partially cover the pan.
Now add red chili powder, coriander powder, and black pepper powder. Mix well and cook for a minute.
Now mix in cashew paste, water, and sugar. Simmer for 5-6 minutes. Do stir in between.
Now add garam masala and kasoori methi (crushed between your palm). Mix well.
Add paneer cubes. Mix and simmer for 1-2 minutes.
Now add saffron-cream mixture. Mix and let it come to a simmer.
Lastly, add cardamom powder and turn off the stove.
Stir well and shahi paneer is ready to serve.
Cardamom powder must be added at the end of the cooking process. After adding, do not boil or simmer the gravy otherwise it loses its aroma.
You should not simmer for longer after adding paneer pieces. Otherwise, paneer will get chewy.
Always crush kasoori methi between your palm before adding. By doing so, it releases its flavor at most. Sometimes, kasoori methi catches up moisture (if living in a humid climate) and you cannot crush into powder. In that case, toast it into the microwave for 45 seconds. Let cool down and then crush.