To make the vegetable stock, add the olive oil to a heavy-bottomed pan or stockpot over a medium heat.
Add the onion, leek, carrot and fennel and sweat for 2-3 minutes.
Add enough cold water to generously cover the vegetables and turn up the heat to high.
Add the garlic, peppercorns, mushrooms, celery, tomatoes and parsley stalks and stir together. Bring to the boil and boil gently for 15 minutes.
Pour the stock through a sieve. Discard the vegetable pieces or reserve for another use. The liquid stock is ready to be used. It can be stored in the fridge for up to three days or frozen in batches for future use.
To make the soup, roughly chop the shallots and garlic. Heat the olive oil in a large, heavy-bottomed pan or stockpot and sweat the shallots and garlic until soft but not coloured. Add 600ml/1 pint of stock.
Add the cubed potatoes and cook for 10-12 minutes or until the potatoes are just tender. Season, to taste, with salt and freshly ground black pepper.
Add a knob of butter and stir. Taste again for seasoning and adjust if necessary. Add the cream and bring back to the boil.
Meanwhile, coarsely chop the parsley, including the stalks. When coarsely chopped you should have enough to tightly fill a mug.
Add the parsley to the soup and stir well then turn off the heat. Leave for a minute or two, until the parsley has wilted slightly.
Allow the hot soup to cool slightly, then ladle, in batches, into a jug blender (do this carefully and in small batches). Alternatively, use a stick blender to blend the soup. Blend until smooth.
For a very smooth soup, you can pass the soup through a sieve into a clean pan. If you like a slightly thinner soup, add a bit more vegetable stock until the soup has the desired consistency.
Serve the soup in warm bowls with bread on the side, or top with a poached egg and a drizzle of truffle oil for a special meal.