Slice the leeks lengthwise and rinse thoroughly under running water to remove dirt. Then, slice them thinly.
In a large pot, melt the butter (or heat oil) over medium heat. Add the sliced leeks and cook until they are soft, about 5–7 minutes.
Add the diced potatoes to the pot and pour in the stock. Bring the mixture to a boil.
Reduce the heat to low, cover the pot, and let it simmer for about 20 minutes, or until the potatoes are tender.
Use an immersion blender to puree the soup directly in the pot, or transfer it to a blender in batches. Blend until smooth (or leave it slightly chunky if preferred).
Stir in the milk or cream and heat gently. Avoid boiling after adding the dairy.
Season with salt and pepper to taste. Garnish with chopped chives or parsley if desired. Serve warm with crusty bread.