Heat the oil in a large pan or casserole over medium heat. Add the onion and cook for 6–8 minutes, until soft and lightly golden.
Add the garlic and ginger, cook for 1 minute until fragrant.
Stir in the cumin, coriander, turmeric, paprika, chilli powder, and garam masala. Cook for 30–60 seconds, stirring constantly, to toast the spices.
Add the sun-dried tomatoes, tinned tomatoes, and tomato purée. Stir well and simmer for 5–8 minutes to let the sauce reduce slightly and the flavours combine.
Add the chicken chunks, stirring to coat in the sauce. Pour in the chicken stock, season with salt and pepper, then bring to a gentle simmer.
Cover and cook for 15–20 minutes, until the chicken is cooked through and tender.
Take off the heat or drop to very low heat.
Stir in the cream gently, until fully incorporated. If you prefer a silkier sauce, use a stick blender to blitz briefly before adding the cream.
Return to low heat for 1–2 minutes to warm through — don’t let it boil once the cream’s in, or it may split.
Taste and adjust seasoning. Serve topped with fresh coriander and rice or naan.