Prep the aromatics: Finely chop the onion, and mince the garlic and ginger. Cut the chicken into bite-size pieces and pat dry with paper towels.
Make the spice base: In a bowl, whisk together crushed tomatoes, tomato paste, yogurt, lemon juice, garlic, ginger, garam masala, cumin, coriander, paprika, turmeric, cayenne, salt, black pepper, and brown sugar or honey if using.
Load the slow cooker: Add the chopped onion to the bottom of the slow cooker. Place the chicken on top.
Pour the tomato-spice mixture over the chicken and stir to coat.
Add the fats: Dot the top with butter and ghee (if using). These will melt into the sauce as it cooks, giving that classic silky texture.
Cook low and slow: Cover and cook on Low for 5–6 hours, or on High for 2.5–3 hours, until the chicken is very tender but not shredding apart.
Finish the sauce: Stir in the heavy cream. Taste and adjust salt, lemon juice, and heat.
If the sauce is thin, let it cook uncovered on High for 10–15 minutes to thicken slightly.
Rest and serve: Let the butter chicken sit for 5 minutes, then garnish with chopped cilantro. Serve hot with basmati rice and warm naan.