Start by marinating the chicken pieces in a bowl. Combine the boneless chicken thighs with grated garlic, fresh ginger, garam masala, red chili powder, turmeric, cumin, salt, pepper, plain yogurt, and lemon juice. Mix everything well until the chicken is thoroughly coated. Allow it to marinate for at least 30 minutes—if you have more time, letting it sit for a few hours or overnight in the fridge will deepen those flavors beautifully.
In a large pan or skillet over medium heat, add one tablespoon of vegetable oil. Once hot, toss in the chopped onion and sauté until they are soft and golden brown, about 5-7 minutes. Add in the chopped red pepper along with minced garlic and grated ginger. Sauté for another 2-3 minutes until fragrant.
Add the marinated chicken into the pan! Stir everything together and cook on medium-high heat until the chicken is browned on all sides—about 5-7 minutes. Make sure to stir occasionally so it cooks evenly.
Once your chicken is nicely browned, sprinkle in additional garam masala, cumin, red chili powder, salt, and pepper to taste. If you're feeling adventurous, add those spicy red chili flakes! Stir well to coat everything in those fragrant spices.
Pour in the tomato sauce and mix it all together. Bring it to a simmer on low heat for about 10 minutes.
Reduce the heat further and slowly stir in heavy cream (or your milk-and-cream mixture). Allow this to simmer gently for another 5-10 minutes until everything is heated through and velvety smooth.
Taste your Butter Chicken and adjust seasoning if necessary. Serve hot over steamed rice or with warm naan bread. Garnish with fresh cilantro if desired!