Heat oil in a medium pan over medium-high heat. Once hot, add the onions and sauté until golden, 10-12 minutes. Deglaze with ¼ cup of water. Once the water dries up, continue to sauté for another 2-3 minutes until the onions turn a deeper brown color. Add the garlic and ginger and sauté for 2 minutes, until aromatic.
Add the tomato paste, puréed tomatoes, green chili pepper, cardamom pod, ground spice powders (coriander, cumin, Kashmiri chili/paprika, turmeric, and red chili) and salt and continue to cook for 8-10 minutes, until the tomatoes are reduced and the oil starts to separate. If the tomato mixture starts to stick, deglaze again with ¼ cup water.
Turn off the heat and let this tomato masala cool for a few minutes before transferring it to a food processor. Process on High speed for about 1 minute, until puréed to a mostly smooth sauce. (Note 2) Pour this sauce back into the same pan along with the measured water.
Optional – If you’re pan-searing the paneer, do so now. Heat ghee or butter in a large nonstick pan over medium heat. Place the paneer cubes in a single layer and cook, turning constantly, until lightly golden on all sides, ~6-8 minutes in total. If it starts to pop, reduce the heat. Transfer the paneer from the pan to a plate. Set aside.
Heat the sauce over medium heat. It’ll start to bubble and form craters. Stir in sugar, if you'd like it a tad sweeter (I always add it). Add the peas, cover with the lid slightly ajar, and let simmer for 5-7 minutes, stirring occasionally. Stir in paneer and let it simmer for another 10 minutes, uncovered. Stir occasionally to prevent it from sticking to the bottom. If the masala starts to dry up, add 1/2-3/4 cup water and bring to a simmer.
Pour in the heavy cream and allow to come to a simmer. Taste and adjust the salt, if needed. Turn off the heat and sprinkle with crushed methi (if using), garam masala, and cilantro leaves. Drizzle with more cream, if you'd like. Serve hot with basmati rice, roti, naan, or paratha.