Wash and pat dry the chicken pieces around 400 grams (medium small pieces are good for this recipe). Marinate the chicken with 3-4 tablespoon of yogurt or hung curd, 1/3 tablespoon of salt, 1/3 tablespoon of ginger garlic paste, 1 tablespoon of lemon juice and 1/2 tablespoon of red chilli powder. Keep the marinated chicken for 3-4 hours.
After the marination, heat a grill pan or any pan with 2 tablespoon of butter. Make sure that your butter doesn't burn while heating it. Place the marinated chicken pieces arranging them separately. Fry them for 5-10 minutes in medium heat. Turn the pieces and cook till it's dry. Keep aside.
In a kadai heat 2 tablespoon of butter and 1 tablespoon of oil so that the butter doesn't get burn.
In the kadai add 1 chopped onion and 1 tablespoon of ginger garlic paste and sauté till the onions are soft and golden in colour.
Add 2 tomato purée in it. I blended the tomatoes in a grinder and sieve it to get the fine paste or purée of it. Sieving is important for getting the smooth texture of the gravy. Add 1/2 tablespoon of red chilli powder, 1/3 tablespoon of salt or as per taste and 1/3 tablespoon of turmeric powder. Sauté the masalas till the it's thick and starts getting dry.
Now add the chicken pieces and 1/2 cup of water and boil in low flame till it's dry. Stir the gravy occasionally so that it doesn't burn or stick from the bottom.
Add garam masala powder 1 tablespoon, crushed dry fenugreek leaves/kasuri meethi 2 pinch, and 1/3 cup of cream or 1 cup of full cream milk along with 2 tablespoon of cashews paste or almonds paste.
Make the consistency of the gravy as per your taste. Off the flame and let it rest for few minutes with a tablespoon of butter and covering with a lid.
Your yummy creamy butter chicken is ready to serve with naan, roti, rice or pulao. Garnish them with coriander leaves and sliced onions.