Wrap the whole spices (bay leaf, cardamom, cloves, pepper) in a cheesecloth or muslin to make a bouquet garni
In a large pan or kadhai, heat a tablespoon of butter and a tablespoon of oil. Add kashmiri red chillies, ginger garlic paste and saute for a minute. Add onions and cook for another 2-3 minutes. Next add cashews and poppy seeds. Once the onions turn translucent, add tomatoes and a teaspoon of salt. Cook the tomatoes for 2-3 minutes and then add the spice bouquet garni along with ½ cup water. Cover and cook this for 15 minutes till the tomatoes soften.
Set the mixture aside to cool. Once cool, remove the bouquet garni and blend this mixture to a smooth paste. Add another cup of water while blending.
In the same pan or kadhai, heat the remaining butter and add the blended tomato onion paste prepared in step #3. Add garam masala powder, chili powder, turmeric, ketchup, ½ teaspoon salt along with ½ cup water. Bring this to a boil.
Once the curry comes to a boil, simmer and cook for 20 minutes, till you can see drops of oil floating to the top and along the sides
At this point, you can smoke the gravy if you like. Carefully heat a piece of lump coal using tongs till red hot. Place the coal in a steel bowl and place this bowl in the pan in a way that it doesn't submerge (watch video). Pour a teaspoon of oil on top and as soon as it starts smoking, cover the gravy for 2 minutes.
In another pan, dry roast the kasuri methi and grind it to a fine powder. Mix kasuri methi and a tablespoon of curry in the gravy. Add paneer cubes. Mix and simmer for 2 more minutes. Top with more cream or butter and serve hot.