Heat the oil in a large saucepan. Add the onion, garlic, celery, leek and carrot and cook over a medium heat, stirring occasionally, for 5 minutes. Add the tomatoes, stock, courgette, cabbage, bay leaf and haricot beans. Bring to the boil, lower the heat and simmer for 10 minutes.
Add the pasta and season to taste. Stir well and cook for a further 8 minutes. Keep stirring because the soup may stick to the base of the pan. Just before serving, add the parsley and stir well. Ladle into individual bowls and serve with grated Parmesan.