Bring a large pot of water to boil. In the meanwhile make an 'X' at the bottom of each tomato. Immerse them in the boiling water, when you see the skin has blistered, remove them and transfer to a bowl filled with ice cold water. Peel the skin, roughly chop the tomatoes.
Transfer the chopped tomatoes along with its juices & soaked and drained cashew nuts in a blender. Blend till smooth, strain and set aside.
Heat 3 tablespoons butter plus oil in a heavy bottomed pan/ kadai, add whole spices.
When the spices become fragrant add coarsely crushed ginger green chilli paste. Sauté until the rawness is gone. Add Kashmiri chilli powder, sauté over medium-low heat for 10 secs.
Immediately add the prepared tomato purée, mix well with the seasoned butter, cover and let it cook on medium-low heat until it leaves fat. Stir in between to prevent any sticking at the bottom of the pan. This will take about 15-20 minutes.
Now add tomato ketchup, salt (to season), sugar (to balance out the tartness of the tomatoes), Kasoori methi, red chilli powder, roasted cumin powder and garam masala. Sauté it on medium heat for another minute.
Add 3/4 to 1 cup water (adjust as per desired consistency), mix well and bring to a boil. Check for seasonings and adjust now.
Add paneer pieces (you can also fry the paneer pieces and keep them immersed in water until ready to use in the gravy, I've used fried paneer pieces), mix well and let it simmer covered for another 5 minutes so that the paneer absorbs all the flavors.
Finally add the cream and another tablespoon of butter, mix well and simmer for another 1-2 minutes. Finish it off with a little sprinkle of kasuri methi. Switch off the heat and serve with pilaf or any flatbread!