Heat olive oil and 1 tablespoon butter in a large skillet over medium heat.
Add chopped onion and sauté until soft and translucent.
Stir in garlic and ginger and cook for about 1 minute until fragrant.
Add chicken pieces and cook until lightly browned on all sides.
Mix in tomato puree, garam masala, paprika, turmeric, cumin, salt, and pepper.
Simmer the mixture for about 10–12 minutes until chicken is cooked through.
Reduce heat and stir in heavy cream and remaining butter.
Let the sauce simmer gently for another 5 minutes until thick and creamy.
Taste and add sugar if needed to balance the acidity of the tomatoes.
Garnish with chopped cilantro and serve warm.