Whisk yogurt, lemon juice, 2 teaspoons garam masala, 1 teaspoon cumin, 1 teaspoon Kashmiri chili powder, 1/2 teaspoon turmeric, 1/2 teaspoon salt, garlic, and ginger in a bowl. Add chicken and coat thoroughly. Cover and refrigerate for 30 minutes to 4 hours.
Remove chicken from refrigerator 15 minutes before cooking. Finely dice onion, mince garlic, and grate ginger.
Heat 1 tablespoon butter in a large skillet or Dutch oven over medium-high heat. Working in batches, add marinated chicken pieces in a single layer, shaking off excess marinade. Cook 3-4 minutes per side until golden brown. Transfer chicken to a plate.
Reduce heat to medium and add remaining 2 tablespoons butter. Add diced onion and cook 5-7 minutes until soft and golden. Add minced garlic and grated ginger, cooking 1 minute until fragrant. Stir in tomato paste and cook 2 minutes until caramelized.
Add garam masala, cumin, coriander, Kashmiri chili powder, and turmeric. Toast spices for 30 seconds until aromatic. Pour in crushed tomatoes, scraping up browned bits from the pan bottom. Add sugar and salt.
Simmer sauce for 8-10 minutes until thickened. Use an immersion blender to puree sauce until silky smooth, or carefully transfer to a regular blender in batches and return to pan.
Return pan to medium-low heat. Stir in heavy cream and water or chicken broth. Add browned chicken pieces and any accumulated juices. Crush dried fenugreek leaves between your palms and sprinkle into sauce. Simmer 10-12 minutes until chicken is cooked through.
Taste and adjust salt if needed. If sauce is too thick, add more water or cream. If too thin, simmer longer to reduce. Garnish with fresh cilantro and serve hot with basmati rice or naan bread.