In a large pot, melt the butter over medium-low heat. Add onions, carrots, celery and cook gently, stirring occasionally, until soft and translucent, about 20 minutes.
Stir in the tomatoes, stock, salt and pepper. Raise heat to medium until the liquid bubbles, reduce to simmer for 30 min, stirring frequently.
Stir in cream. Remove from heat and purée in batches in a blender. Return and heat gently. Serve hot.