Add the tomatoes, onion, cashews, ginger-garlic paste, cardamom, bay leaf and 1 cup of water to a pan. Cover and cook on medium heat for 10 to 12 minutes, until the tomatoes are completely soft and pulpy.
Remove the bay leaf, let the mixture cool a little, then blend it to a very smooth paste. Strain it back into the pan through a sieve, pressing well with a spoon — straining is what gives the gravy its restaurant silkiness.
Heat the butter and oil in a wide pan on low-medium heat. Add the Kashmiri chilli powder and coriander powder and stir for a few seconds so they bloom in the butter without burning.
Pour in the strained tomato paste. Cook on medium heat for 8 to 10 minutes, stirring now and then, until the gravy thickens and the butter starts to shine at the edges.
Add the garam masala, sugar and salt. Mix well and taste — the gravy should be balanced: tangy, gently sweet and warm, not sharp.
Add about 1/2 cup of hot water if the gravy is too thick, then slide in the paneer cubes. Simmer gently for just 2 to 3 minutes so the paneer stays soft.
Lower the heat, stir in the cream and the crushed kasuri methi. Warm through for a minute — do not let it boil hard after the cream goes in.
Garnish with a swirl of cream and fresh coriander. Serve hot with naan, roti or jeera rice.