Put the chicken in a large bowl and add 1 tbsp of the garlic paste and 1 tbsp of the ginger paste, then add the yoghurt and salt and mix well. Leave to marinate for at least 30 minutes
Add the oil to the pan and, once hot, add the bay leaves, cinnamon, cardamoms, cloves, and peppercorns. Move them gently in the oil until they have released their aromatics
Do not underestimate this step! Add the onions to the flavoured oil and cook over medium heat until they are softened and beginning to brown. This will take at least 20 minutes!
Once the onions are soft and beginning to brown, add the remaining 1 tbsp of ginger paste and 1 tbsp of garlic paste and 3 of the chopped green chillies. Continue to fry for another two minutes before adding the tomatoes and garam masala
Add the turmeric, chilli powder, coriander powder and cumin powder and sauté for around 1 minute.
Add enough water to stop the masala from sticking (around 1 tbsp) and mix well. Cook to reduce to a thick consistency
Add the chicken along with its marinade and mix well. Fry until the chicken is just beginning to take on colour and then add around 250ml of water to make the gravy loose but not too wet. Cover and cook for 20 minutes over a low heat
Remove the chicken from the pan and reduce the gravy until you have a nice thick sauce then return the chicken to the pan to warm through.
Melt the butter and add the remaining 2 chillies and the juliennes of ginger. Cook over a high heat for about a minute and then pour over the chicken
Serve with naan breads, chapatis or rotis. Enjoy!