Heat oil in a pan. Add green cardamoms & onions. Stir fry until they turn transparent to light pink. (If you do not have ginger garlic paste for this recipe, you may add chopped ginger and garlic along with onions)
Next add tomatoes & salt. Saute for 3 minutes. Cover and cook till the onion & tomatoes turn soft & completely mushy.
Add garam masala, coriander powder, cashew nuts, red chili powder & sugar (optional).
Stir fry this till the onion tomato masala turns aromatic. This takes 2 to 3 minutes.
Turn off the stove & cool this completely.
Transfer to a blender & pour water. Blend to a really silky smooth puree. If it is not smooth, filter it through a strainer to another bowl. Set this aside.
Heat butter in the same pan. Optional - When the butter melts, add cinnamon, cloves, green cardamoms & bay leaf.
Reduce the flame to low, saute ginger garlic paste for a minute until it smells aromatic.
Stir in the blended onion tomato puree. Taste test your puree & optionally you may add more red chili powder for a deeper color.
Pour more water & mix well. Bring it to a rolling boil. Reduce the heat to medium and cook covered until the gravy cooks down to a thicker consistency. Keep stirring every few minutes.
You know the gravy is done when it turns thick and traces of fat is visible on the gravy. Taste test and add more salt or garam masala if needed.
Lower the flame completely, add cubed paneer. Take kasuri methi to your palm and crush it in between your palms. Sprinkle this.
Mix & cook covered on a low heat for 2 minutes. Turn off and pour cream (save some for garnish) & stir.
Transfer paneer butter masala to a serving bowl. Garnish with more cream & chopped coriander leaves. Serve this with butter naan , Basmati rice or jeera rice.