Warm up butter or ghee in a saucepan. Turn the heat on medium. Add cumin seeds, bay leaves and cinnamon sticks and let them fry and brown for 30 seconds.
Add pureed onion cashew paste. Sprinkle some salt. Sauté well and let it cook on medium heat for 8-10 minutes or till it starts to become golden brown.
Add tomato puree. Continue to cook for 5-8 minutes till butter starts to separate on the side and mixture starts to thicken.
Keep stirring occasionally and make sure that it is not sticking to the sides and bottom of the pan. If it is sputtering too much, you can partially cover the pan with a screen or lid.
Add all the spices. Turmeric powder, garam masala, red pepper powder. Mix well and cook for a minute.
Add beaten yogurt with water and let it come to a gentle boil. Reduce the heat.
Remove paneer pieces from water and add them to the gravy. Mix and simmer for 1-2 minutes.
Lastly, add cardamom powder and kasoori methi (crushed between your palm). Mix well and turn off the stove. Adjust the salt.
Drizzle heavy cream on top. Sprinkle saffron strands and cilantro leaves. Shahi paneer is ready to serve. Enjoy !