In a large bowl, combine the chicken pieces, yogurt, 2 tbsp (30 ml) garam masala, 1 tsp ginger, and 1 tsp garlic.
Mix until the chicken is thoroughly coated.
Cover and marinate in the refrigerator for at least 30 minutes.
While the chicken marinates, prepare the sauce.
Add the chopped onion, 2 tsp (10 ml) ginger, 2 tsp (10 ml) garlic, crushed tomatoes, ground coriander, cumin, chili powder, and ½ tbsp garam masala to a blender.
Blend until the mixture is completely smooth.
Heat the coconut oil in a large skillet or pan over medium-high heat.
Add the marinated chicken, shaking off any excess marinade.
Cook for 5-7 minutes, turning occasionally, until browned on all sides and cooked through.
Pour the blended tomato sauce over the chicken in the skillet.
Bring to a simmer and cook for 5 minutes, allowing the flavors to meld together.
Reduce the heat to low and stir in the heavy cream and butter until the butter has melted and the sauce is rich and creamy.
Season with salt to your liking.
Serve hot with basmati rice or naan bread.
Garnish with a handful of fresh, chopped cilantro before serving to add a bright, herbaceous finish.