Whisk together the yogurt, lemon juice, ginger and garlic paste, Kashmiri chili powder, garam masala, salt, and oil in a large bowl. Add the chicken pieces to this bowl and mix well. Let it marinate in the refrigerator preferably for at least 2- 4 hours.
In a large pan over medium heat, add some oil. Fry the marinated chicken pieces till they are cooked and keep them aside in a bowl.
In the same pan that we fried chicken, add some butter (2 tbsp) and oil. When the butter melt and starts to foam, add the onions, and cook, stirring frequently, until translucent. Add cashew nuts and sauté for a few more minutes.
Add the ginger/garlic paste and sauté 2-3 minutes, till the onion is light brown.
Add turmeric, 1 tbsp of chili powder, coriander powder, garam masala, cumin powder, salt, and cook, stirring frequently, until the raw smell is gone, for 2-3 minutes
Add tomatoes, little water, and vinegar. Evenly mix it and let it simmer for 10-15 minutes on low flame, till the tomatoes are cooked well.
Once they are cooked, cool them and grind them to a fine puree. If there are any big pieces, you can strain them. It should be a smooth paste.
Heat the same pan, add some butter and red chili powder. Saute the chili powder on low flame, till the raw smell is gone, 2-3 minutes. Careful not to burn them. Add the puree to the pan
Bring the gravy to a boil, stirring frequently, and add the fried chicken pieces, 1/2 tsp kasoori methi, and fresh cream. Bring the mixture to a boil, then lower the heat and simmer, uncovered, for approximately 10-15 minutes.
Garnish it with 1/2 tsp kasoori methi and cream. Butter Chicken is ready to be served with rice, naan, etc.