Marinate chicken: In a medium bowl, stir together the yogurt, ground spices, dried fenugreek, salt, oil, lemon juice, and garlic (if using). Add the chicken and toss to coat. Cover and set aside or refrigerate (ideally) for up to 24 hours. When ready to use, allow the chicken to come to room temperature.
Purée tomatoes: Drain the whole tomatoes to remove excess liquid. You’ll be left with around 200g whole, peeled tomatoes. Purée these in a food processor or blender and set aside.
Cook chicken (see post for alternative broil method): Heat the butter/ghee and 1 tbsp of oil in a large, wide-bottomed, preferably nonstick pan over medium-high heat. As it melts, place the chicken pieces in a single layer and cook for 3 minutes, until lightly charred on the bottom. Flip the pieces over and cook for another 2 minutes. (If your pan isn’t wide enough, you may have to do this in 2 batches. Adding too much chicken pools up moisture/ doesn’t allow charring.) Transfer the chicken pieces to a bowl. Cover and set aside. Prepare masala: Heat the remaining 3 tbsp oil in the same pan over medium-high heat. Add the onions, garlic, and ginger. Sauté for 5 minutes, until they turn golden brown. Deglaze with ¼ cup water, removing any stuck bits from the bottom.
Reduce the heat to low-medium. Add the ground spices and salt. Sauté for a minute to allow them to bloom.
Add the tomato paste and puréed tomatoes and increase the heat to medium-high. Continue to sauté for 4-5 minutes, until the tomatoes reduce and the oil starts to separate. Turn off the heat of the tomato mixture and transfer it to a food processor (for a smooth, but slightly chunkier sauce) or blender (for a smoother sauce).
Blend sauce: Process or blend on high speed until smooth, about 1 minute. Transfer the sauce back into the same pan along with measured water. Heat the pan back up over medium heat.
Simmer together: Add sugar and stir to mix. It’ll be a tad sweet at first, but will mellow down as it settles into the sauce. Add the prepared chicken with its juices and stir. Cover and simmer for 5-7 minutes, stirring once in between, until the chicken is tender and the oil rises to the top.
Finish off: Pour in the cream and allow to come to a simmer. Turn off the heat. Sprinkle in the dried fenugreek leaves (methi) and stir in the butter. Garnish with cilantro and drizzle in more cream, if you’d like. Serve immediately with naan and/or basmati rice.