In a large frying pan or casserole dish heat the butter over medium heat. Saute the grated onion until golden brown. Add the garlic, ginger, chilli, coriander, cumin and salt then cook until fragrant.
Add the chicken then increase heat to medium high and cook until the chicken takes colour.
Add tomatoes and yoghurt. Simmer for 2 to 3 minutes.
Add approximately 500ml water (enough to cover) and bring to the boil. Cook over high heat until chicken becomes tender and is coming off of the bone. Reduce heat to a simmer and cook for a further 7 minutes.
Just before serving stir in the garam masala. Serve with naan, rice or chapati.