Heat oil in a large skillet over medium heat. Add onion and sauté until soft and translucent, about 4–5 minutes.
Stir in garlic and ginger and cook for another minute.
Add garam masala, cumin, turmeric, chili powder, and salt. Stir until fragrant, around 30 seconds.
Add chicken pieces and cook until no longer pink on the outside, about 5–6 minutes.
Stir in tomato paste and mix well to coat the chicken.
Pour in the heavy cream and bring to a gentle simmer. Reduce heat and let it cook for 10–12 minutes, stirring occasionally.
Add butter and stir until melted and incorporated.
Serve hot, garnished with fresh cilantro and paired with rice or naan.