In a mixing bowl, combine the chicken, yogurt, garlic, ginger, garam masala, turmeric, cumin, paprika, and salt. Mix well and marinate for at least 1 hour, preferably overnight, in the refrigerator.
Heat oil in a large skillet over medium-high heat. Add the marinated chicken and cook until browned on all sides, about 5 minutes. Remove chicken and set aside.
In the same skillet, add the onions and cook until soft and translucent, about 3 minutes.
Stir in the tomato puree and bring to a simmer. Add the browned chicken back to the skillet. Let it simmer for 15 minutes, stirring occasionally.
Reduce heat to low and stir in the heavy cream and sugar. Simmer for another 10 minutes, or until the sauce thickens.
Season with additional salt to taste. Garnish with chopped cilantro before serving.
Serve hot with basmati rice or naan bread.