Melt the butter in a pan.
Over low heat, sweat the chopped onion and, when the moisture has evaporated, continue cooking until browned along the edges. This takes about 10 minutes with occasional stirring.
Meanwhile, debone the chicken and chop the meat into bite-sized pieces.
Add the chopped tomatoes, cream and pan juices to the onion in the pan and bring to a simmer.
Stir in the chicken and allow to simmer (don't boil because the cream will curdle!) for about five minutes.
Taste the sauce. Add salt and sugar, as needed (see notes after the recipe).
Transfer the butter chicken to a serving bowl and top with cilantro.
Serve with rice or paratha.