Melt the butter in a heavy-bottomed pan and add the onion. Add a couple of tablespoons of water, cover the pan and sweat for 10 minutes, then add the vegetables and seasoning. Cover and sweat for 15 minutes more. Check every so often to make sure that the vegetables are not burning – you may need to add another splash of water. This ‘sweating’ is great for getting the sweetness out of the vegetables.
Add the stock and seasoning and bring to the boil, then turn the heat down and cook until the vegetables are completely tender. Add the cream and leave to cool then puree in batches in a blender – you want to end up with a completely smooth mixture. Taste for seasoning, and judge whether you need to add any more stock (or water). It depends on how thick you want the soup to be.
To make the butter mash it in a small bowl with a fork. Heat the olive oil in a small frying pan and add the chilli. Cook for only 30 seconds or so then add the cumin and cook for another minute. Leave to cool then scrape the chilli and cumin into the butter, add the tomato ketchup and mash it all together until it is well combined. Cover and put into the fridge so that it can set to firmness.
Heat the soup to serve it and put a chunk of the butter on top, allowing it to melt as you take it to the table.