Heat the olive oil in a large pot over medium heat.
Add the diced onion and cook for 5 minutes, stirring occasionally, until softened.
Add the minced garlic and cook for 1 minute.
Stir in the sliced carrots and sliced celery and cook for 5 minutes.
Add the chopped zucchini and diced potato and cook for 2 minutes, stirring gently.
Pour in the diced tomatoes, tomato sauce, and vegetable broth.
Bring the mixture to a gentle boil.
Reduce the heat and simmer for 20 minutes, stirring occasionally.
Taste near the end of simmering and adjust salt if needed.
Add the drained and rinsed cannellini beans during the last 5 minutes of cooking.
Stir in the fresh spinach and lemon juice.
Cook for 2 minutes, then remove from heat.
Let the soup rest for 10 minutes before serving.