Marinate chicken: In a bowl, combine yogurt, ginger-garlic paste, salt, turmeric, garam masala, and chili powder. Add chicken, mix well, cover, and refrigerate for at least 1 hour or overnight.
Toast nuts: In a small dry skillet over medium heat, toast cashews and almonds until lightly golden, about 3-4 minutes. Set aside.
Cook onions: Heat ghee in a large heavy pot over medium heat. Add sliced onion and cook, stirring often, until deep golden brown, about 15 minutes.
Blend sauce: Transfer half of the cooked onions to a blender along with toasted nuts and 1/4 cup water. Blend into a smooth paste.
Cook chicken: Add marinated chicken to the pot with remaining onions. Cook over medium-high heat, stirring, until chicken is no longer pink, about 5 minutes.
Simmer: Stir in the nut-onion paste and remaining 1/4 cup water. Bring to a simmer, then reduce heat to low, cover, and cook for 20 minutes, stirring occasionally.
Finish: Stir in heavy cream and simmer uncovered for 5 minutes until sauce thickens. Adjust salt and spices to taste.
Garnish: Sprinkle with chopped cilantro and serve hot with naan or rice.
Tips
For a richer flavor, use bone-in chicken thighs and increase cooking time by 10 minutes.
Substitute cashews and almonds with blanched almonds for a smoother sauce.
Leftovers can be refrigerated for up to 3 days; reheat gently.
To make it dairy-free, use coconut cream instead of heavy cream and coconut oil instead of ghee.