Grate the garlic and ginger and chop the onions; cut the chicken into bite-sized pieces.
In a mixing bowl, combine grated garlic, grated ginger, yogurt, 1 tbsp garam masala, 1 tsp paprika, 1/2 tsp ground coriander, 1 tsp turmeric, 1 tsp salt, and 1 tsp ground black pepper to make the marinade.
Add the chicken pieces to the marinade and toss to coat evenly. Marinate for at least 10 minutes.
Heat 2 tablespoons vegetable oil in a large skillet over medium-high heat. Add the marinated chicken and cook until browned, about 5–7 minutes; then remove the chicken and set aside.
Reduce heat to medium, add 2 tablespoons butter to the same pan, then add the chopped onions and cook, stirring occasionally, until golden, about 5 minutes.
Add the remaining 2 tablespoons butter, coconut cream, tomato paste, 2 tsp sugar, 1 tsp salt, 1 tsp paprika, and the optional 1 tsp red curry paste to the onions; stir to combine and simmer on low for 5 minutes.
Return the browned chicken to the pan, stir into the sauce, and cook on low until the chicken is cooked through and the flavors meld, about 10 minutes.
Garnish with chopped fresh cilantro and serve the butter chicken over cooked white rice.