In a large pot or Dutch oven, heat olive oil over medium heat.
Add the diced onion and sauté for about 5 minutes until transparent.
Stir in the minced garlic, carrots, and celery. Cook for an additional 5 minutes until the vegetables are tender.
Sprinkle in the cumin, paprika, salt, and black pepper, stirring for 1 minute to enhance the spices' flavors.
Pour in the vegetable broth and bring the mixture to a boil.
Add the drained and rinsed beans to the pot. Reduce heat and let it simmer for about 15 minutes.
For a creamier texture, use an immersion blender to blend a portion of the soup until smooth, or transfer a few cups to a regular blender, blend, and return to the pot.
Stir in the heavy cream (or coconut milk) and chopped spinach. Let it simmer for another 5 minutes, allowing the spinach to wilt.
Remove from heat and stir in the lemon juice. Adjust seasoning if necessary.
Serve hot, garnishing with fresh parsley if desired.