Marinate the chicken: In a bowl, mix yogurt, 1 teaspoon garam masala, 1 teaspoon cumin, 1/2 teaspoon coriander, 1/2 teaspoon turmeric, 1/2 teaspoon salt, and half the garlic and ginger. Add chicken and toss to coat.
Chill for at least 30 minutes, or up to 8 hours.
Build the sauce in the slow cooker: Add onion, remaining garlic and ginger, tomato sauce, remaining spices, black pepper, and butter or ghee. Stir to combine.
Add the chicken: Scrape the marinated chicken and any marinade into the slow cooker. Stir gently to coat.
Cook low and slow: Cover and cook on Low for 5 to 6 hours, or on High for 2.5 to 3 hours, until the chicken is very tender.
Finish the sauce: Stir in cream or coconut milk, lemon juice, and sugar or honey.
Taste and adjust salt, heat, and acidity. If you want a thicker sauce, let it cook uncovered on High for 15 to 20 minutes.
Serve: Spoon over basmati rice or with warm naan. Top with chopped cilantro.
Optional stovetop boost: For an extra layer of flavor, briefly sear the marinated chicken in a hot skillet until lightly browned before adding to the slow cooker.
Not essential, but it adds some smoky edges.