To a pan add the diced onion, roughly chopped garlic, ginger, green cardamoms, green chilies, cashews, almonds. Add around 2 (16 oz) to 2.5 (20 oz) cups water. Let it boil on medium-high heat for 15 to 20 minutes.
Let it cool down slightly. I remove the skin from the almonds at this point (optional). Once it has cooled down a little, transfer the ingredients to a blender. Blend to a smooth paste. Set aside.
Meanwhile, cut your paneer. I cut the paneer into triangles for this recipe. Cut into cubes and then cut each cube into the triangle.
Now, heat a heavy bottom pan on medium heat. Once hot, add the oil and ghee and then add the cinnamon stick, bay leaf, and cloves. Saute the spices for few seconds until fragrant. Stir in the prepared onion-nuts paste into the pan. Cook for 4 to 5 minutes stirring often.
Add in the coriander powder, red chili powder, garam masala, sugar, salt, cardamom powder, and black pepper powder. Stir the spices and cook for 1 minute.
Remove pan from heat and add the yogurt, little at a time and whisking continuously. This is important so that the yogurt doesn't split. Cook for 1 minute.
Also, make sure your yogurt is at room temperature before you add it to the pan, Add remaining 1/2 to 1 cup water to the pan and stir. Also, add the saffron strands, if using (crush them before adding) and stir.
Let the curry simmer for 5 to 6 minutes. It will thicken as it cooks. Add in the cream and mix.
Add the paneer and simmer for 3 more minutes. Sprinkle some cardamom powder on top.
now your shahi paneer is ready, garnish with cream and coriander leaf and Serve Shahi Paneer hot with naan or jeera rice, and enjoy it.