Heat oil in a thick-bottomed pan and add in cumin seeds, cardamom, cloves and peppercorns.
Once they begin to sizzle, add in ginger, garlic and onions, and fry for 3-5 minutes on medium-high heat until the onions turn pink and tender.
Add in red chilli powder, turmeric, cumin powder and coriander powder, and fry for a minute. Mix in tomato paste and cook for another minute until well blended.
Add in chopped tomatoes and salt, and cook for a few minutes until tomatoes pulp and start to release oil around the sides of the pan.
Slowly stir in beaten yogurt until well blended, forming a smooth gravy base.
Add in the paneer pieces, mix well cook covered for a minute or two.
Add in water if necessary depending on the consistency you prefer, and allow to cook covered for another 3-4 minutes on medium-low heat until paneer is cooked through.
Turn off the heat and mix in garam masala. Garnish with fresh cilantro leaves and serve piping hot with a side of rotis or rice, and a salad.