Peel and finely chop (or blend) the garlic, ginger and chilli. Add the garam masala, ground coriander, paprika, tomato purée and any stalks from the fresh coriander. Blend or pummel into a paste. Marinate the chicken in the paste for at least an hour or ideally overnight.
Slice the peeled onions. Heat a tablespoon of oil in a saucepan and add the onions and the remaining spices. Fry until the onions are soft.
Add the tinned tomatoes, stock and cream, then season with salt. Simmer the curry for 10 minutes, then add the chicken pieces with the paste. Cook gently for another 20 minutes, until the chicken is cooked and the sauce has reduced slightly.
Chop the aubergine into a small dice and fry in a splash of oil for 5 minutes to soften, then drain on kitchen paper. Warm up more oil in the same pan to gently toast the chilli flakes, mustard seeds and curry leaves. Stir into the yoghurt
Roughly chop the fresh coriander and add to the curry along with a squeeze of lemon juice. Serve with a lemon wedge.