The night before you make the soup (or 8 hours before), place the beans in a very large bowl and cover with cold water by 2 inches. Refrigerate for at least 8 hours or overnight. Drain the beans, rinse under cold running water and pick out any small stones, then drain again.
In a Dutch oven or similar large, sturdy pot, heat the olive oil over medium-low heat. Add the carrots, celery, onion, garlic, and rosemary. Let the vegetables cook until beginning to soften and the onion is turning translucent, stirring occasionally, about 10 minutes.
Stir in the beans, salt, smoked paprika, and pepper and let cook 30 seconds. Add the broth, water, and bay leaves.
Increase the heat and bring to a boil. Reduce the heat to low, partially cover the pot, and simmer until the beans are tender, about 1 hour to 1 hour 30 minutes. Stir occasionally and run a spoon along the bottom of the pot to keep the beans from sticking.
If you'd like the soup creamy, use an immersion blender to puree it, leaving it fairly chunky (or transfer a few ladles of the soup to a blender and puree—be careful, hot soup splatters!—then return to the pot).
Remove the soup from the heat. Stir in the lemon juice. Carefully taste and adjust the seasoning as you like. Serve hot with a generous sprinkle of parmesan.
Notes
TO STORE: Refrigerate leftovers in an airtight container for up to 5 days.
TO REHEAT: Warm in a saucepan over medium-low heat or microwave individual bowls until heated through. You may need to add more broth or water when reheating.
TO FREEZE: Freeze for up to 3 months in an airtight container or freezer bag. Thaw overnight in the refrigerator.