Heat the butter in a large saucepan. Tip in the onion and cook until softened, about 5 mins, stirring often. Add the cauliflower, potato, stock, milk and seasoning. Bring to the boil, then reduce the heat and leave to simmer for about 30 mins until the cauliflower is soft and the potato almost collapsing.
Whizz in a food processor or crush with a potato masher until you get a creamy, thick soup. Top up with more milk to thin a little if serving in mugs. You can make ahead up to 2 days in advance, cool, cover and leave in the fridge until needed, or freeze for up to 1 month. When ready to serve, warm through, ladle into mugs or bowls, top with the cheese pieces, then stir through before eating.