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 5–7 minutes, stirring occasionally, until soft and lightly golden.
Add garlic and spices. Stir in the garlic, thyme, oregano, and smoked paprika.
Cook 30–60 seconds until fragrant. Don’t let the garlic brown.
Build the base. Add the white beans, broth, bay leaf, and Parmesan rind if using. Bring to a gentle boil, then reduce to a simmer.
Cook 10–12 minutes to let the flavors mingle.
Blend for creaminess. Remove the bay leaf (and rind). Use an immersion blender to puree about half the soup in the pot. Aim for a mix of creamy and chunky.
If you prefer, transfer 2–3 cups to a blender, puree, then return it to the pot.
Stir in the spinach. Add the spinach and let it wilt for 2–3 minutes. It will shrink quickly and turn a vibrant green.
Finish and season. Stir in lemon juice. Taste and adjust with salt, black pepper, and red pepper flakes.
If it tastes flat, add another splash of lemon or a pinch more salt.
Serve. Ladle into bowls and finish with a drizzle of olive oil, grated Parmesan, or a sprinkle of fresh herbs if you like.