In a medium prep bowl, stir together the marinade ingredients until smooth, then add the chicken and stir it in so it's nicely coated. Cover and refrigerate overnight (you could for a minimum of 1 hour, but longer is better!).
Heat the olive oil and 1 tablespoon of the butter over medium-high heat in a large (I use a 12" one) skillet. Once the skillet is hot, add the chicken (use tongs to take it out of the bowl and don't just pour it all in the pan). Discard the rest of the marinade. Cook the chicken for about 3 minutes and flip and cook it for another 2-3 minutes. Transfer it to a plate.
Add the remaining butter and the onions to the skillet. Reduce the heat to medium and sauté until softened and lightly browned (about 5-7 minutes). As they're cooking, use your spoon to loosen any browned bits from the bottom of the pan.
Add in the tomato sauce, cream, sugar, garam masala, salt, and cayenne pepper. Give it a good stir.
Add the chicken back in (along with any plate juices), and increase the heat so it's bubbling, then reduce the heat and gently simmer for another 10 minutes or until it's cooked through and the sauce has thickened up a bit. Serve with fresh cilantro sprinkled over top, rice, and naan.