- Heat the olive oil in a large heavy bottomed pot over medium heat. Add the onion, celery, and carrots. Cook gently for 8–10 minutes until softened and fragrant, stirring occasionally to prevent browning. This forms the essential flavour base. 
- Stir in the chopped garlic, courgette, and green beans. Cook for a further 3–4 minutes until the vegetables begin to soften slightly. The gentle sautéing enhances their natural sweetness. 
- Pour in the chopped tomatoes along with their juices, then add the diced potato. Stir well and cook for 5 minutes to let the flavours mingle before adding any liquid. 
- Add the vegetable stock, salt, and a pinch of pepper. Bring to a gentle boil, then reduce to a simmer. Cover partially and cook for 20 minutes, allowing the vegetables to tenderise and the broth to develop depth. 
- Stir in the pasta and continue simmering for 8–10 minutes until the pasta is al dente. Stir occasionally to prevent sticking to the bottom of the pot. 
- Add the cannellini beans and spinach, if using. Simmer for another 5 minutes to heat through and allow the spinach to wilt. Taste and adjust seasoning as needed. 
- Remove the pot from the heat and let the soup sit for 5 minutes before serving. This resting time allows the flavours to harmonise beautifully. 
- Ladle the soup into warm bowls, sprinkle generously with freshly grated Parmesan, and finish with chopped basil or parsley. Serve with crusty bread to soak up the rich broth.