Melt the butter with the oil in a large skillet over medium heat.
Add onions and cook until golden and soft.
Stir in garlic and ginger, cook for about 1 minute until fragrant.
Sprinkle in garam masala, cumin, coriander, turmeric, and chili powder. Toast the spices briefly.
Add chicken pieces and cook until lightly browned on the outside.
Pour in tomato puree and simmer for 15 minutes.
Stir in cream and yogurt, lower heat, and simmer for another 10 minutes until chicken is cooked through and sauce thickens.
Season with salt and garnish with fresh cilantro.
Serve hot with basmati rice or naan bread.