Warm the pot: Heat 2 tablespoons olive oil in a large pot over medium heat.
Add onion, carrots, and celery with a pinch of salt. Cook 6–8 minutes, stirring, until softened and fragrant.
Build flavor: Stir in garlic and tomato paste. Cook 1–2 minutes until the paste darkens slightly.
This step deepens the flavor.
Add the base: Pour in crushed tomatoes and vegetable broth. Add oregano, thyme, bay leaf, and a few grinds of black pepper. Stir well.
Simmer with veggies: Add diced potato and zucchini.
Bring to a gentle boil, then reduce to simmer. Cook 12–15 minutes, until the potato is just tender.
Add beans and pasta: Stir in the kidney beans, cannellini beans, and pasta. Simmer 7–9 minutes, stirring occasionally, until the pasta is al dente.
If the soup thickens too much, add more broth or hot water to loosen.
Finish with greens: Fold in kale or spinach. Cook 2–3 minutes until wilted and vibrant.
Brighten and season: Remove the bay leaf. Add lemon zest and juice to taste (start with half, then adjust).
Season with salt and more pepper until the flavors pop.
Garnish and serve: Top bowls with chopped basil/parsley. For extra richness, drizzle a little olive oil or add a small spoon of vegan pesto.