Heat oil and butter in a large pan over medium heat. Add onion and cook until golden.
Stir in garlic and ginger, cooking until fragrant.
Add garam masala, cumin, coriander, and chili powder. Stir well to coat onions with spices.
Add chicken pieces and cook until lightly browned.
Pour in crushed tomatoes and simmer for 15 minutes.
Lower the heat, stir in cream, and let it cook gently for another 10 minutes.
Season with salt and pepper. Garnish with cilantro and serve hot over rice.