Mix yogurt, lemon juice, ginger-garlic paste, spices, salt, and oil in a large bowl until smooth. Add chicken and coat thoroughly.
Cover and refrigerate for at least 1 hour (4-8 hours or overnight is best). Remove from fridge 15-20 minutes before cooking.
Soak cashews in very hot water for at least 20 minutes, then drain and set aside.
Heat oil in a large skillet over medium-high heat. Cook marinated chicken pieces in batches for 3-4 minutes per side until golden. Transfer to a plate.
In a heavy-bottomed pot, melt 2 tablespoons butter with 1 tablespoon oil. Add cumin seeds and sizzle for 30-45 seconds until fragrant.
Add onion (if using) and cook for 8-10 minutes until golden. Add ginger-garlic paste and cook for 1-2 minutes. Stir in tomato paste and cook for 2-3 minutes.
Add crushed tomatoes and simmer for 15-20 minutes until thickened and raw tomato taste mellows.
Remove from heat and cool slightly. Add soaked cashews, then blend with an immersion blender until completely smooth. Strain for ultra-smooth texture if desired.
Return pot to medium heat. Stir in garam masala, coriander, chili powder, cayenne, salt, and sugar. Cook for 2-3 minutes.
Pour in heavy cream, stirring continuously. Crush fenugreek leaves between palms and add along with remaining 2 tablespoons butter. Stir until butter melts.
Add cooked chicken and any accumulated juices to the sauce. Gently fold to coat. Simmer for 8-10 minutes until chicken is fully cooked and flavors meld.
Transfer to a serving bowl, garnish with fresh cilantro, and serve immediately with basmati rice or naan.