Sweat the aromatics: Warm the olive oil in a large pot over medium heat. Add onion, carrots, and celery with a pinch of salt.
Cook 6–8 minutes, stirring occasionally, until the vegetables soften and the onion turns translucent.
Build flavor: Stir in garlic, rosemary, thyme, and red pepper flakes. Cook 1 minute, until fragrant. Avoid browning the garlic.
Add beans and liquid: Add the beans, 4 cups of broth, and the bay leaf.
Bring to a gentle simmer. Reduce heat to medium-low and simmer 12–15 minutes to meld flavors.
Create creaminess: Scoop out about 2 cups of the soup (mostly beans and broth), blend until smooth, and return it to the pot. Alternatively, use an immersion blender for a few quick pulses. Adjust thickness with the remaining broth as needed.
Add greens: Stir in the chopped greens.
Simmer 3–5 minutes, until tender and vibrant.
Finish and season: Remove the bay leaf. Stir in lemon juice. Taste and season generously with salt and black pepper.
Add a drizzle of olive oil for richness if you like.
Serve: Ladle into bowls and top with parsley, lemon zest, or vegan parmesan. Pair with warm crusty bread.