Prepare the marinade: Peel 2 garlic cloves and 1 cm of ginger. Crush the garlic cloves and grate the ginger. Cut the chicken breasts into 2-3 cm cubes. In a bowl, combine the yogurt with the garam masala, paprika, chili powder, crushed garlic, and grated ginger. Add the chicken pieces and mix well. Cover with plastic wrap and refrigerate for at least 30 minutes, or up to overnight.
To prepare the butter chicken: Peel the onion. Cut it in half, then in half again, and slice it thinly. Peel and crush the remaining garlic cloves. Peel and grate the remaining ginger.
In a skillet, heat 2 tablespoons of olive oil. Add the onion, crushed garlic, and ginger. Add the ground coriander and stir. Sauté for a few minutes until the onions become translucent.
Add the peeled tomatoes and stir. Crush the peeled tomatoes if they aren't already chopped. Simmer this sauce.
Meanwhile, grill the chicken with the marinade on a non-stick grill pan or in an ovenproof dish. Grill for 10 minutes in a preheated oven at 200°C (400°F), turning the pieces halfway through.
Add the butter and cream to the sauce and stir well. Add the grilled chicken pieces with the marinade, coating them gently. Continue cooking over low heat for 15 to 20 minutes. The mixture should barely simmer. Check occasionally to ensure the sauce isn't sticking.
Serve immediately with basmati rice (or Indian rice), naan bread, and chopped fresh cilantro.