Combine yogurt, lemon juice, ginger, garlic, garam masala, turmeric, and cumin in a bowl. Add chicken, mix well, and marinate at least 1 hour or overnight.
Heat butter and oil in a large pan over medium heat. Add onions and cook until golden.
Add marinated chicken pieces, cooking until lightly browned.
Stir in tomato puree and simmer for 15 minutes.
Reduce heat and add cream. Cook gently until the sauce thickens and chicken is tender.
Taste and season with salt. Garnish with fresh cilantro and serve hot with rice or naan.