Combine the chicken ingredients in a large bowl and stir until the chicken is coated completely. Cover with plastic wrap and let marinade for at least 30 minutes, up to overnight if time allows in refrigerator.
Heat 1 tbsp of oil in a large skillet over medium heat. Sear chicken pieces in oil, until browned all each side, about 3 minutes. Chicken will not get cooked through here, but later on in the sauce. Don't overcrowd the pan, you will have to work in batches, adding more oil if necessary. Set chicken aside on a plate to keep warm.
For the Butter Chicken Sauce:
To the same pan that was used to cook the chicken, add 3 tbsp of butter and let it melt over medium heat. Toss in the onions and let cook about 5 to 7 minutes, scraping any browned bits off the bottom of the pan.
Add in the garlic, ginger, cumin and garam masala and cook until fragrant, about 30 seconds.
Stir in the tomatoes, chili powder, cayenne (if using), salt and cashews. Bring mixture to a slight simmer for about 10 minutes, until mixture turns a deep red color.
Scoop mixture into a blender and process until smooth. Pour mixture back into the skillet over low to medium heat and gradually stir in the heavy cream and sugar.
Add the chicken (and any juices) back into the sauce and bring to a simmer, stirring frequently. Finally add in the remaining 3 tbsp of butter and let it melt into the sauce as you stir. Serve warm with basmati rice, warm naan bread and enjoy!