In a bowl, combine yogurt, garam masala, turmeric, cumin, paprika, cayenne, half the garlic, ginger, and salt. Add chicken pieces and marinate for at least 1 hour.
Heat vegetable oil in a large skillet over medium heat. Add onions and sauté until golden brown, about 5 minutes.
Add the remaining garlic and ginger to the skillet and cook for 1 minute until fragrant.
Add the marinated chicken with all the marinade to the skillet. Cook until the chicken is mostly cooked through, about 8-10 minutes.
Pour in the tomato puree and simmer for 10 minutes to develop flavor and thicken the sauce.
Stir in the heavy cream and cook for an additional 5 minutes until sauce is creamy and chicken is fully cooked.
Garnish with fresh chopped cilantro and serve hot with rice or naan bread.
Notes
Adjust spices to taste. Leftover tikka masala is great for meal prep and reheats well.