Heat a large heavy-based saucepan over a medium heat. Add 30ml olive oil and heat until shimmering.
Add 1 large chopped onion, 2 diced carrots and 2 diced celery sticks. Sauté, stirring occasionally, for 8–10 minutes, or until the onion is translucent and the vegetables have softened.
Stir in 3 crushed garlic cloves and cook for 1 minute, until fragrant.
Pour in 800g chopped tomatoes (with juice), 1.5l vegetable stock, 1 tsp dried oregano and 1 tsp dried basil. Stir to combine, then bring to a gentle simmer.
Reduce the heat to low. Cover and simmer for 10 minutes to allow the flavours to meld.
Add 2 peeled and diced medium potatoes and 400g drained and rinsed cannellini beans. Increase the heat to medium–low and simmer, uncovered, for 10–15 minutes, or until the potatoes are tender.
Stir in 100g small pasta (ditalini or elbow macaroni) and 100g green beans, trimmed and cut into 2.5cm pieces. Cook for 8–10 minutes, or until the pasta is al dente and the beans are tender yet still crisp.
Remove from the heat and stir in 150g roughly chopped fresh spinach, allowing it to wilt in the residual heat.
Season generously with salt and freshly ground black pepper to taste, then give the soup a final stir.
Ladle into bowls and serve with freshly grated Parmesan and crusty bread on the side.