Sauté the base: Heat olive oil in a large pot over medium heat. Add diced onion, carrots, and celery. Sauté for about 5 minutes until softened.
Add aromatics: Stir in garlic, thyme, rosemary, and bay leaf. Cook for 1 minute to release their flavor.
Build the soup: Add zucchini, potatoes, and green beans. Pour in vegetable broth and bring to a gentle boil.
Simmer: Reduce heat to low, cover, and let the soup simmer for 20–25 minutes or until vegetables are tender.
Add beans: Stir in the white beans. For a creamier texture, mash a few beans before adding them. Simmer another 10 minutes.
Finish: Stir in spinach or kale (if using) during the final minutes of cooking. Remove bay leaf, season with salt and pepper, and serve hot.
Garnish: Sprinkle with fresh parsley and grated Parmesan cheese before serving.