Heat the oil in a medium to large saucepan and add the pureed onions.
Fry the onions until quite dark, you will need to keep stirring to ensure the puree doesn't burn as this will ruin the taste of the curry by adding bitterness. Then add the garlic and ginger and stir through.
Next you need to add the pureed tomatoes, green chillies, salt, red chilli powder and turmeric. Turn the heat to low and cook for 10 minutes. Keep stirring the tomato masala , if it starts to dry out, add small splashes of water. After the 10 minutes, you should see the oil start to separate from the masala.
Turn the heat to medium and now add the chicken to the masala and stir through. Make sure the chicken properly coats in the masala and that the chicken browns.
Then add the ground coriander, cumin, paprika and black pepper. Stir through and sauté the chicken for 6-8 minutes on low heat. Sauté until the chicken is cooked through, stir at regular intervals. You should see the oil starting to separate from the masala. (Again, add splashes of water if the chicken starts to stick to the pan.)
Next add the 600ml of water, bring to boil and cover the pan with lid. Then turn the heat to low and simmer for 30 minutes. (If the oil has not come to the surface, remove the pan lid and allow it to simmer on a low heat for another few minutes.)
Add the garam masala, freshly chopped coriander and serve!