Cut the boneless, skinless chicken thighs into 1-inch cubes. Place the chicken in a bowl and add the plain yogurt, 1 teaspoon minced garlic, 1 teaspoon grated fresh ginger, 1 teaspoon garam masala, 1/2 teaspoon ground turmeric, 1/2 teaspoon cumin, and 1/2 teaspoon salt. Mix everything thoroughly to coat the chicken evenly. Cover the bowl and let the chicken marinate in the refrigerator for at least 30 minutes to allow the flavors to infuse.
In a large skillet over high heat, melt 2 tablespoons of unsalted butter. Add the marinated chicken (from Step 1) in a single layer and cook for about 2–3 minutes on each side, until the pieces develop a nice char. Once cook and slightly charred, transfer the chicken to a plate and set aside. Wipe the skillet clean to remove any burnt bits before making the sauce. I like making sure the chicken gets truly golden on the edges for an extra smoky flavor.
Melt the remaining 2 tablespoons of unsalted butter in the same skillet over medium heat. Add the diced yellow onion and sauté for about 5–7 minutes, stirring occasionally, until the onion is soft and translucent. Add 1 tablespoon minced garlic and 2 teaspoons grated fresh ginger, then sauté for an additional minute until fragrant.
Add the brown sugar, 3/4 teaspoon garam masala, 3/4 teaspoon ground cumin, 3/4 teaspoon paprika, 3/4 teaspoon ground coriander, 1/2 teaspoon ground turmeric, 1/2 teaspoon salt, and the tomato puree to the skillet with the onion, garlic, and ginger. Lastly, stir in the heavy cream (or coconut cream). Bring the sauce to a gentle simmer and cook for 5 minutes so the flavors meld together. Carefully transfer the sauce to a blender and blend until smooth, starting at low speed and keeping the lid slightly ajar to let steam escape.
Return the blended sauce to the pan. If the sauce is too thick, whisk in 2–4 tablespoons water, a little at a time, until it reaches your desired consistency. Add the charred chicken (from Step 2) back to the sauce and stir well. Simmer everything together over medium-low heat for about 10 minutes, allowing the flavors to blend and the chicken to finish cooking through. For a richer flavor, I sometimes add a splash more cream just before serving.