Thoroughly combine the chicken with all the marinade ingredients and allow to marinate for 2-3 hours. Remove the chicken from the marinade.
In a large skillet over medium heat, add 2 tablespoons oil and 1 tablespoon butter. Sear the chicken on all sides. Meanwhile, in another large skillet, melt the remaining tablespoon of butter over medium heat, and add the garlic. Cook for 1 minute.
Add the garam masala, ground coriander, turmeric, cumin, paprika, and salt. Cook for another minute. Stir in the tomato sauce and simmer for 10 minutes. Bring the heat down, and when the sauce is no longer bubbling, stir in the cream. Cook over medium low heat, allowing the sauce to thicken slightly.
When the chicken is browned, add it to the sauce. Allow everything to simmer for 5-8 minutes. Stir in the cilantro (if using) and serve with basmati rice.