In a cooking pot, add the tomato, onion, bay leaf, whole dried red chillies, cashew nuts, cinnamon, cardamom, garlic, turmeric powder, cumin powder, coriander powder, kasuri methi, salt and water. Mix well.
Place the pot over high heat and bring to a boil.
Stir, cover and cook over low heat for 20 minutes or till the tomatoes are mushy. Keep stirring in between and breaking up the tomatoes with your ladle.
Remove from heat, cool and grind everything together, including the whole spices.
Transfer the ground mixture to a pot.
Add the peas and mix in.
Place the pot over low heat, stir and bring to a slight simmer.
As soon as you see bubbles on the sides, stir, cover and cook for 5 minutes. Keep stirring in between.
Mix in the paneer.
Mix in the garam masala powder, stir well and cover.
Meanwhile, heat a small pan and add the ghee.
When the ghee is hot, add the rest of the ingredients for tempering. Stir well.
Add the tempering (everything in the small pan) to the curry and mix well.
Mix in chopped coriander.
Stir and cook covered for a minute. Stir well in between. Make sure the gravy does not stick to the pan.
Remove from heat and serve hot with Indian flatbreads.