Heat the oil and butter in a saucepan and add the carrots, onion, garlic and leeks. Fry gently for about 5 minutes, stirring frequently, until they are just beginning to colour.
Chop up the tomatoes and add to the pan with their juice, tomato puree and season to taste.
Pour in the beans and the stock. Bring to the boil and simmer for an hour.
Add the spaghetti and simmer for a further 10 minutes.
Serve very hot, sprinkling each portion liberally with parmesan cheese.