Warm the pot: Heat 2 tablespoons olive oil in a heavy pot over medium heat.
Sauté the aromatics: Add 1 chopped onion, 2 diced carrots, and 2 diced celery stalks. Cook 6–8 minutes, stirring, until softened and lightly golden.
Season with a pinch of salt.
Add the garlic and tomato paste: Stir in 4–6 minced garlic cloves and 1 tablespoon tomato paste. Cook 1–2 minutes until fragrant and the paste darkens slightly.
Build the flavor: Add a pinch of red pepper flakes (optional), 1 teaspoon chopped fresh rosemary, and 1 teaspoon chopped fresh thyme. Stir for 30 seconds.
Beans and broth: Add 2 cans (about 3 cups) drained white beans and 4 cups vegetable broth.
If using, add a bay leaf and a Parmesan rind.
Simmer gently: Bring to a low boil, then reduce to a simmer. Cook 15–20 minutes. Smash a cup of beans against the side of the pot to thicken.
Add greens: Stir in 2–3 cups baby spinach or chopped kale.
Cook 2–4 minutes until wilted and tender.
Finish bright: Remove bay and rind. Stir in the zest of half a lemon and 1–2 teaspoons lemon juice. Add 2 tablespoons chopped parsley.
Season and serve: Taste and season with salt and black pepper.
Drizzle with a little olive oil. Serve with crusty bread or over cooked grains.