Marinate the Chicken: In a bowl, combine chicken with yogurt, garlic, ginger, garam masala, turmeric, cumin, chili powder, and salt. Mix well, cover, and marinate for 1 hour (or overnight).
Cook the Chicken: Heat butter in a large skillet. Cook the chicken until browned. Set aside.
Prepare the Sauce: In the same skillet, sauté onions until golden. Add garlic, ginger, and spices. Cook for 1-2 minutes. Stir in crushed tomatoes and cook for 5-7 minutes.
Simmer the Chicken: Add chicken and cream. Simmer for 15-20 minutes until chicken is cooked through.
Garnish and Serve: Stir in cilantro and serve with rice or naan.