Heat oil in a deep heavy-bottomed pan on medium-high heat and add in cumin seeds, black peppercorns, cardamom pods, and cinnamon stick. As soon as the cumin seeds start to sizzle, add in ginger, garlic and onion, and fry for 2-3 minutes till lightly browned.
Stir in the spices and tomato paste, and mix everything well to combine.
Season with salt, and add in chopped tomatoes. Cook for 2-3 minutes, stirring occasionaly, till tomatoes start to pulp and blend well with the spice mixture.
Mix in the fried paneer pieces and peas, and cook covered for 2-3 minutes on low heat.
Gently stir in the beaten yogurt and mix well. Add in the dried fenugreek leaves and garam masala powder as well as a splash of water, and cook covered for another 3-5 minutes. If you prefer it a bit more saucy, add some more water and bring it to a slow simmer.
Garnish with fresh cilantro leaves and serve warm with fresh rotis or a side of rice.