Combine all ingredients for the marinade in a large mixing bowl. Whisk well to combine. Add the chicken and mix well to coat.
Cover and allow the chicken to marinate in the refrigerator for at least 2 hours or up to three days.
For the Curry
Heat the oil in a large pan or Dutch oven over medium-high heat. Add the butter and allow it to melt completely. Add the onions and mix well to combine. Sauté for 4-5 minutes, or until starting to soften and turn translucent.
Add the garlic, ginger, and cumin seeds to the pot. Continue to cook until the onions start to brown, approximately 3-5 minutes. Stir often.
Mix in the cinnamon stick, tomatoes, red chili powder, and salt with the onions. Reduce heat to medium-low and allow mixture to simmer for 5-10 minutes, stirring often.
Optional- remove the cinnamon stick and transfer the onion and tomato mixture to a food processor or blender. Process until smooth and creamy then return tomato sauce back to the pot.
Increase heat to medium. Add the chicken (plus marinade) to the pan. Mix to combine. Cook the chicken for 10 minutes, stirring often.
Stir in the chicken broth and bring to a gentle boil. Reduce heat to low and simmer for at least 30-45 minutes, stirring occasionally.
Mix in the cream, tomato paste, and ground cashews. Allow the curry to simmer for an additional 5-10 minutes.
Season with salt and pepper, to taste and garnish with fresh cilantro if desired.