Heat the oil in a saucepan over a medium-low heat. Add the onions and saute for about 10 minutes, until soft and translucent. Add the garlic, ginger, chillies, garam masala and curry powder, and stir for a minute.
Tip in the sweet potatoes and stir until they’re well coated in the spices. Add some salt and pepper and pour in the stock. Increase the heat and bring to a simmer. Cook gently until the sweet potatoes are very tender – about 15 minutes.
Remove the soup from the heat, cool slightly and then puree in a blender or food processor, or with a stick blender, until very smooth. Return to the pan, stir in the coconut milk and warm through gently.
Take off the heat and add the coriander and lime juice. Taste and adjust the seasoning if necessary. Serve the soup topped with a good dollop of yoghurt, if you like, and scatter over some torn coriander. Finish with a little black pepper.