Prep the vegetables. Rinse the escarole thoroughly—grit can hide between the leaves. Chop the onion, carrots, and celery evenly.
Mince the garlic. Drain and rinse the beans if using canned.
Sweat the aromatics. Warm the olive oil in a large pot over medium heat. Add onion, carrot, and celery with a pinch of salt.
Cook 6–8 minutes, stirring occasionally, until the vegetables are tender and lightly golden.
Build flavor. Stir in the garlic and red pepper flakes. Cook 30–60 seconds, just until fragrant. Add the tomato paste and cook 1–2 minutes to caramelize it slightly—it should darken in color.
Add beans and broth. Stir in the beans, broth, bay leaf, thyme, and Parmesan rind if using.
Bring to a gentle simmer.
Simmer to meld. Reduce heat and simmer 10–15 minutes. Taste and season with salt and pepper. The broth should taste savory and round.
Blend a portion (optional, but great). Ladle 2 cups of the soup (mostly beans and broth) into a blender and puree until smooth, then return it to the pot.
Or use an immersion blender for 2–3 short pulses. This gives the soup a creamy body without cream.
Add the escarole. Stir in the chopped escarole. Simmer 5–8 minutes until wilted and tender but still bright.
If you like a softer green, cook a few minutes longer.
Finish with lemon and herbs. Remove the bay leaf and Parmesan rind. Stir in lemon zest and 1 tablespoon lemon juice. Taste.
Add more lemon, salt, or pepper as needed. Sprinkle in parsley if using.
Serve warm. Ladle into bowls and top with grated Parmesan and a drizzle of olive oil. Add a side of crusty bread to soak up the broth.