Marinate the chicken: In a bowl, mix yogurt, lemon juice, and spices. Add chicken pieces and coat well. Cover and refrigerate for at least 30 minutes (up to overnight).
Cook the chicken: Heat oil in a skillet. Add marinated chicken and cook until browned on all sides (does not need to be fully cooked). Remove and set aside.
Make the sauce: In the same pan, melt butter and sauté onions until golden. Add garlic, ginger, and spices; cook until fragrant.
Add tomatoes: Stir in tomato purée and cook until it thickens and darkens slightly, about 10 minutes.
Blend (optional): For a silky texture, blend the sauce until smooth using an immersion blender.
Simmer: Return the sauce to the pan, add chicken, and pour in cream (and cashew paste if using). Simmer on low for 10–15 minutes until chicken is cooked through and sauce is thick and creamy.
Finish: Add a knob of butter and garnish with fresh cilantro. Serve hot with basmati rice.