Chop tomatoes and keep them aside. Grate ginger and garlic and keep it aside.
Cut paneer in 1” square pieces and keep them aside. Crush small cardamom just to open their mouth and keep them aside.
Heat pan at medium heat and add oil and 2 tbsp of butter. As the butter melts add mace and small cardamom.
Saute for about 30 seconds and add ginger garlic. Mix well and cook ginger garlic till raw smell is gone.
Now add chopped tomatoes, salt and cover the tomatoes and cook till tomatoes become soft.
It may take 5-6 minutes. Saute after every few minutes to avoid burning. Once tomatoes are soft enough, switch off the heat and let them cool down.
When tomatoes are cold grind them to puree. Sieve the tomato puree as we want really smooth gravy.
Again heat the pan at medium low heat. Add butter and let it melt.
As the butter melts, add turmeric powder, red chilly powder and kasmiri lal mirch powder.
Now add strained tomato puree. Mix well and increase the heat to medium. Let the gravy cook for few minutes. If you want you can add food coloring at this time.
Now add coriander powder mix and let the gravy boil for 2-3 minutes. If gravy is too thick add little water at this time.
Now add fresh cream, mix and add paneer pieces and kasoori methi Mix everything and cook for another minute.
Butter paneer masala is ready. Serve it with naan, rice, chapatti or parathas.