Mix the yogurt, smoked paprika, turmeric, garam masala, salt, and oil in a bowl to create the marinade. Add the paneer cubes, tossing gently to coat. Cover and refrigerate for at least 20 minutes, or up to 2 hours for deeper flavor.
Preheat your grill or broiler. Line a tray with foil and thread the marinated paneer onto skewers or lay flat on the tray. Grill or broil for about 4-5 minutes per side until the edges are charred and smoky, listening for a gentle sizzling and watching for darkened spots.
While the paneer cooks, heat 2 tablespoons of oil in a heavy-bottomed pan over medium heat. Add the chopped onion and cook, stirring occasionally, until golden and soft, about 8 minutes, releasing a sweet aroma.
Stir in the minced garlic and grated ginger, cooking for another 2 minutes until fragrant and the oil starts to smell aromatic.
Add the spices—garam masala, turmeric, smoked paprika, and chili powder if using—and cook, stirring constantly, for about 1-2 minutes until the spices release a fragrant aroma and turn slightly darker.
Pour in the crushed tomatoes and stir well, scraping up any bits from the bottom of the pan. Let this simmer gently for 10-15 minutes until the sauce thickens, deepens in color, and smells bright and slightly smoky.
Stir in the heavy cream or coconut cream, blending thoroughly until the sauce becomes glossy and smooth. Season to taste with more salt or spices if needed.
Gently add the grilled paneer to the sauce, stirring carefully to coat each piece without breaking it. Reduce the heat to low and simmer for another 5 minutes, allowing the flavors to meld and the sauce to thicken slightly.
Turn off the heat and let the dish rest for a couple of minutes. Garnish with chopped coriander leaves for a fresh, herbal finish.
Serve hot with steamed rice or warm naan, spooning generous amounts of the rich, smoky sauce over each serving. Enjoy the layered textures and comforting flavors that make this dish a true homemade classic.