Start the base: Warm the olive oil in a large pot over medium heat. Add the onion, carrots, and celery with a pinch of salt.
Cook 6–8 minutes, stirring occasionally, until the vegetables soften and the onions turn translucent.
Add aromatics: Stir in the garlic and tomato paste. Cook 1–2 minutes until fragrant and the paste darkens slightly. If using red pepper flakes, add them now.
Build flavor: Add the tomatoes, beans, broth, rosemary, thyme, bay leaf, and the Parmesan rind if using.
Bring to a gentle boil, then reduce to a simmer.
Simmer: Let the soup bubble softly for 15–20 minutes. This gives the herbs time to infuse and the beans to mingle with the broth.
Blend for creaminess: Scoop out 2 cups of the soup (bean-heavy) and blend until smooth, or use an immersion blender to partially blend right in the pot. Return the blended portion to the pot and stir.
This thickens the soup without cream.
Add greens: Stir in the kale or spinach and cook 2–3 minutes, just until tender and bright.
Finish: Remove the bay leaf, herb stems, and Parmesan rind. Add a squeeze of lemon juice and a pinch of zest. Taste and season with salt and black pepper.
Serve: Ladle into bowls.
Drizzle with good olive oil, sprinkle with parsley, and add freshly grated Parmesan if you like. Serve with warm, crusty bread.