Marinate the Chicken:
In a large bowl, combine yogurt, lemon juice, garlic, ginger, and all marinade spices. Add the chicken and mix well to coat. Cover and refrigerate for at least 1 hour (or up to overnight for deeper flavor).
Cook the Chicken:
Heat 1 tablespoon of butter and 1 tablespoon of olive oil in a large skillet over medium-high heat. Add the marinated chicken in batches and cook until lightly browned on all sides, about 5–7 minutes. The chicken doesn’t need to be fully cooked through yet. Remove and set aside.
Make the Sauce:
In the same pan, melt 2 tablespoons of butter. Add the chopped onion and sauté until golden and soft, about 5 minutes. Stir in garlic and ginger, cooking for another minute until fragrant.
Add Spices:
Sprinkle in garam masala, cumin, chili powder, and paprika. Stir continuously for 30 seconds to release their aroma.
Add Tomatoes and Simmer:
Pour in the tomato sauce, stirring well to deglaze the pan. Simmer uncovered for 10 minutes, allowing the sauce to thicken and the flavors to deepen.
Blend for Smoothness (Optional):
For an extra silky texture, transfer the sauce to a blender and purée until smooth. Return it to the pan.
Add Cream and Chicken:
Stir in the heavy cream and sugar. Add the chicken back into the pan and simmer on low heat for 10–15 minutes, or until the chicken is fully cooked and the sauce coats it beautifully.
Finish and Serve:
Taste and adjust salt or spice level if needed. Garnish with fresh cilantro and a drizzle of cream or melted butter. Serve hot with rice or naan.