For the marinade: In a bowl, add the yogurt, chili powder, cumin, turmeric, garam masala, paprika, 2 teaspoons salt and a few grinds of black pepper. Stir until everything is one color. Scoop into a large resealable bag and add the chicken. Leave on the counter at room temperature for 2 hours.
To cook the chicken: In a large pan with straight sides on medium-high heat, add the butter and then the chicken chunks from the bag, discarding the marinade. Cook, turning, until some parts are browned but most are still white, about 8 minutes.
For the sauce. Add the crushed tomatoes, sugar, ginger and garlic to the pan. Things should be bubbly and hot. Stir to marry everything and when the pan smells like garlic and ginger, add the heavy cream and stir again until everything is the same color. Partially cover and simmer on low for 20 minutes.
For serving: Stir in the cilantro and serve over rice with another sprinkle of cilantro.