Place the tofu in a bowl with the garlic, ginger, salt, chilli powder and lemon juice.
Mix cover with cling film and chill for 30 minutes.
Mix together the yoghurt, garam masala, turmeric and cumin and add to the tofu.
Make sure each piece is well coated with the mixture.
Cover and chill for 3-4 hours.
Preheat the oven to 180C/Fan 160C/Gas 4.
Put the marinated tofu pieces on a grill rack set on a baking tray and bake for 8-10 minutes. Brush the tofu pieces with a little oil and turn them over.
Bake for another 10-12 minutes until just cooked through.
Heat the oil in a pan and add the garlic and ginger.
Fry for a minute then add the cardamom, cloves, coriander, garam masala, turmeric, fenugreek and chilli powder.
Stir well and fry for 1-2 minutes.
Stir in the tomato purée and lemon juice and cook for another couple of minutes.
Add the tofu pieces to the sauce and stir well to coat.
Finally add the butter and cream and stir continuously until the butter has melted and the sauce is smooth.
Taste and adjust the seasoning.
Transfer to a warm bowl and serve hot garnished with chopped coriander.