Fry onion, bacon, celery, garlic, and carrots in oil for 3 minutes until soft.
Add potatoes and fry for another 3 minutes.
Pour in stock and bring to a boil.
Stir in tomato purée and simmer for 45 minutes.
Add beans, herbs, chopped tomatoes, and spaghetti then cook until pasta is tender.
Season with salt and pepper to taste.
Drizzle bread slices with olive oil.
Fry one side of the bread in a hot griddle pan for 3 minutes.
Preheat the grill to high.
Top the uncooked side of the bread with mozzarella.
Grill for 3 minutes until the cheese is bubbling.
Ladle soup into bowls and garnish with a croûton.