In a large bowl, combine the Greek yogurt, half of the garam masala, minced garlic, and minced ginger. Add the chicken pieces and toss to coat. Marinate for at least 30 minutes in the refrigerator.
Heat a large skillet or Dutch oven over medium-high heat. Add the marinated chicken pieces in a single layer and cook until lightly browned on all sides, about 5 to 7 minutes. Remove the chicken and set aside.
In the same skillet, melt the butter over medium heat. Add the chopped onion and sauté until translucent and softened, about 5 minutes.
Stir in the remaining garam masala, chili powder, and tomato puree. Bring the mixture to a gentle simmer and cook for 10 minutes, scraping any browned bits from the bottom of the pan.
Return the browned chicken to the skillet. Reduce the heat to low, stir in the heavy cream, and simmer gently for 10 to 15 minutes until the chicken is cooked through and the sauce is thickened.
Garnish the dish with fresh chopped cilantro. Serve hot alongside cooked basmati rice and warm naan bread.