Marinate the Chicken: In a large bowl, mix together the chicken, yogurt, garam masala, salt, cumin, coriander, turmeric, ginger, garlic, paprika, cayenne, and oil or ghee. Toss until evenly coated. Optional: Cover and refrigerate for at least 30 minutes, or up to overnight.
Cook the Chicken: Heat a large skillet over medium-high heat. Add the marinated chicken in a single layer and cook for 7-8 minutes, stirring occasionally, until fully cooked through and golden brown on the outside. Remove the chicken from the skillet and set aside.
Start the Sauce: In the same skillet over medium heat, add 1 tablespoon oil or ghee. Add the tomato paste and cook for 2–3 minutes, stirring often, until it deepens in color and becomes rich and fragrant.
Blend Beans & Milk: In a blender, combine the drained cannellini beans with milk and purée until completely smooth and creamy. Add an extra splash of milk if needed to loosen the texture.
Build the Sauce: Stir the tomato sauce into the skillet with the cooked-down tomato paste. Add the bean purée, then pour in the heavy cream. Stir well, then finish with the butter, letting it melt into the sauce. Add sugar and stir together.
Return the cooked chicken to the skillet, tossing to coat it in the sauce. Simmer for 2–3 minutes to bring everything together. Taste and adjust salt, spice level, and sugar to your liking.
Garnish with chopped cilantro and a dollop of yogurt. Serve warm with basmati rice or naan.