In a bowl, combine yogurt, garlic, ginger, spices, and salt. Add chicken and coat well. Marinate for at least 30 minutes.
Heat a skillet or grill pan over medium-high heat. Cook marinated chicken until lightly charred and just cooked through. Remove and set aside.
In a large pan, melt butter with olive oil over medium heat. Add onion and cook until soft and lightly golden.
Stir in garlic, ginger, cumin, coriander, and paprika. Cook briefly until fragrant.
Add tomato puree and simmer for 5–7 minutes until slightly thickened.
Lower heat and stir in heavy cream until smooth.
Add cooked chicken to the sauce and simmer gently for 5–10 minutes.
Taste and adjust salt or spice level as needed. Serve warm.