Clean the leeks thoroughly under running water, as they often hold soil between their layers. Slice them finely, and chop the onion and potatoes into small, even pieces to ensure they cook evenly later on.
In a large saucepan, melt the butter with olive oil over a gentle heat. Add the leeks and onion, stirring occasionally for about 10 minutes until softened but not browned. This step builds the soup’s sweet and mellow base.
Stir the diced potatoes into the softened vegetables, coating them in the buttery mixture. Allow them to cook for 2 to 3 minutes, absorbing the flavours before adding the stock.
Add the hot stock to the pan and bring to a gentle boil. Reduce the heat, cover, and let it simmer for 15 to 20 minutes until the potatoes are tender when pierced with a knife. Avoid vigorous boiling to keep the soup’s texture smooth.
Once the vegetables are soft, remove from heat and cool slightly. Use a hand blender directly in the pan or transfer to a blender in batches. Purée until smooth and creamy. For a more rustic texture, blend only half of the soup and mix it back in.
Return the soup to a low heat. Stir in the milk or cream, warming it gently without bringing it to a boil. Taste and season with salt and black pepper as needed.
If the soup feels too thick, add a splash of hot stock or water until it reaches your preferred consistency. Stir well to combine and allow the flavours to meld for a few minutes.
Ladle the soup into warm bowls. Sprinkle finely chopped chives or parsley over the top for colour and freshness. Serve immediately while hot.
For a richer finish, drizzle a little cream in a circular pattern or add a few crispy croutons. The contrast of creamy and crunchy textures enhances the dish beautifully.
Serve alongside crusty bread or a buttered roll. Any leftovers can be cooled, stored in the fridge for up to three days, and gently reheated. Avoid boiling to maintain its smooth texture.