Mix yogurt, garlic, ginger, lime juice, and salt together. Stir in chicken. Cover and refrigerate for 4 to 6 hours.
Make The Sauce
In a heavy-bottom stockpot or Dutch oven, heat oil over medium heat.
While the oil is heating, combine coriander, cumin, paprika, nutmeg, cardamom, cinnamon, cayenne, and ginger in a bowl.
Add half of the chicken to the hot oil and cook until edges are browned, about 5 to 7 minutes. Repeat with the remaining chicken. Remove and set chicken aside.
Add butter to the pot. Once melted, add the onion and saute until lightly browned, about 5 minutes.
Add spice mixture to onions and saute for 1 minute, then add the chicken back into the pot.
Add the tomato purée, heavy cream, water, and salt to the pot. Bring to a simmer and cook for 20 minutes. Remove from heat and stir in cilantro and black pepper.