Peel and finely chop the onion. Drain the tofu, pat dry and chop into chunks. Warm 1 tbsp olive oil in a pan. Add the tofu. Fry over a medium heat for 2-3 mins. Flip and fry for another 2-3 mins till golden.
Lift the tofu out of the pan. Pop on a plate lined with kitchen paper. Add the onion to the pan. Season with a pinch of salt and pepper. Fry over a lowish heat for about 5 mins. Stir once or twice till it’s soft. Fill the kettle and boil it.
While the onion cooks, finely slice the chilli. Flick out the seeds if you don’t want your soup to be too spicy. Peel and grate the garlic and ginger. Peel and chop the sweet potato.
Add the garlic, ginger, chilli, lime leaves and vinegar to the onions. Fry for 1 min. Stir everything round the pan till it smells spicy. Turn up the heat.
Add the potato to the pan with the tofu. Pour in the coconut milk. Add 400ml hot water. Bring to the boil. Pop on the lid. Turn the heat down. Simmer for 10 mins.
Snap the woody ends off the asparagus. Trim the spears into 3 cm long lengths. Rinse them. Add to the pan with the tofu. Simmer without the lid on for another 3-4 mins till the asparagus is just tender.
Taste the soup. Add more salt and pepper if you think it needs it. Serve in warm bowls.