Heat olive oil in a large saucepan or soup pot over medium high heat and sauté onion, celery, carrots and zucchini until softened, about 5 minutes. Then add in the garlic and sauté for an additional 30 seconds.: The pan should give a soft sizzle as the olive oil warms, and the aroma of the onion will shift from sharp to sweet as it becomes translucent. You will notice the vegetables start to glisten and reduce in size, and the sound will settle into a gentle bubbling rather than aggressive frying. This step matters because it develops the sweet, savory base that supports the entire soup, creating complexity that canned broth alone cannot provide. A common mistake is using too high heat, which causes the edges to brown quickly and can introduce bitterness. Keep the heat moderate to encourage even softening, and stir every minute or so to ensure the carrots and celery cook uniformly. If your pan seems too dry, add a splash more olive oil , but avoid crowding the pot which can steam rather than sauté the vegetables.
Next add in the vegetable broth, crushed tomatoes, beans, and seasonings. Bring to a boil, then reduce heat, cover and let the soup to simmer for about 20 minutes.: At this point the pot should be perfumed with sweet vegetable aromas, and when you add the minced garlic you will get an immediate fragrant burst. The tiny pieces of garlic will sizzle briefly and become glossy, releasing volatile oils that elevate the whole dish. This quick sauté preserves the garlics bright, aromatic quality while preventing it from turning bitter. The reason to do this at the end of the sauté is to avoid overcooking, which produces an unpleasant, burnt flavor. Keep stirring, and as soon as the garlic becomes fragrant, move to the next step; lingering too long is the most frequent error here.
Add in the baby spinach leaves and pasta, cooking for an additional 10 minutes. Top with parmesan cheese, serve and enjoy!: When you pour in the vegetable broth and the crushed tomatoes , the pan will go from glossy to a full, simmering surface. The steam will carry a vivid tomato scent layered with herbs. Adding the canned beans now allows them to absorb some of the broth and heat through evenly. The dried oregano , basil , and thyme should be sprinkled in so their flavors bloom into the liquid over time. This step is key because simmering melds the disparate ingredients into a cohesive whole rather than a collection of separate flavors. A common oversight is adding salt too early or too generously, which can concentrate as the soup reduces. Add measured salt and taste later, adjusting after simmering.
Bring to a boil, then reduce heat, cover and let the soup to simmer for about 20 minutes: You will see the pot bubble more vigorously as it reaches a boil, with small rolling waves breaking the surface. Reducing the heat to a gentle simmer and covering the pot lets flavors marry in a controlled way, and the steam trapped under the lid helps the vegetables become fully tender. The simmer should be steady but not violent, with occasional small bubbles rising. This slow melding is what deepens taste, so be patient and resist the urge to crank the heat, which can toughen vegetables and evaporate liquid too quickly. If the soup seems too active, lower the heat further, and if it looks too still, nudge it up slightly. Avoid prolonged boiling, which can break down textures.
Add in the baby spinach leaves and pasta, cooking for an additional 10 minutes: When you stir in the fresh baby spinach , you will see it wilt almost immediately into feathery green pockets that soften into the broth. Adding the small pasta like ditalini at this point allows it to cook to a tender but not mushy state during the remaining ten minutes. The smell will brighten as the spinach integrates and the pasta gives a subtle, comforting starchiness to the broth. This timing is deliberate to keep the spinach vibrant and the pasta at the right bite, because if the pasta cooks too long it will disintegrate and turn the soup gummy. Stir gently to avoid breaking the beans, and taste the pasta near the end of cooking to achieve the perfect al dente balance.
Top with parmesan cheese, serve and enjoy!: The final flourish of optional parmesan cheese provides a salty, savory finish that lifts the whole bowl. When you sprinkle it on top, you will see a faint sheen and taste a richer savory note that complements the tomato broth. Serving while still steaming hot encourages the aromas to be at their peak, and adding a pinch of red pepper flakes or a few crunchy croutons can introduce heat or textural contrast. The key mistake here is waiting too long to serve, which causes the pasta to continue absorbing broth and the spinach to collapse. Serve promptly for the best texture and flavor contrast.