Start by mixing all the marinade ingredients in a large bowl. Add the paneer cubes and gently coat them in the mixture. Let this sit for at least 30 minutes, or up to 2 hours in the fridge if you have the time.
Once marinated, you can cook the paneer one of three ways: grill it on skewers, roast in a hot oven at 425°F (220°C) for 10–15 minutes, or pan-fry it in a bit of oil until golden on all sides.
While the paneer is cooking, start on the masala sauce. Heat oil or butter in a pan over medium heat. Add the chopped onions and sauté until golden and soft — this takes about 8 to 10 minutes and it’s worth doing right. Add the ginger-garlic paste and sauté for another minute until fragrant.
Now, stir in the spices: cumin, coriander, turmeric, chili powder, garam masala, and salt. Toast them for 30 seconds, then pour in the tomato puree. Let this simmer gently for 10–12 minutes, until it thickens and deepens in color. Stir occasionally.
Once the sauce has reduced a bit, stir in the cream. Let it simmer for 3–4 more minutes until everything comes together into a smooth, rich curry.
Gently fold the cooked paneer into the hot masala sauce. Let it simmer for another 3–4 minutes so the flavors meld. The paneer should stay soft but soak up all that goodness from the sauce.
Serve it hot, topped with fresh cilantro. It goes perfectly with basmati rice, warm naan, or even roti. If you’re going low-carb, cauliflower rice works too.