Place white beans into a large container and cover with water; let soak 8 hours to overnight.
Drain beans, reserving 2 cups soaking water.
Heat oil in a large pot over medium heat. Add onion and carrots; cook and stir until tender, about 6 minutes. Stir in spinach; cook until wilted, about 2 minutes. Add beans, reserved soaking water, broth, garlic, and bay leaf. Simmer, covered, until beans are tender, about 1 hour.
Discard bay leaf. Pour half the soup into a blender. Cover and hold lid down with a potholder; puree until smooth. Stir pureed soup back into the pot. Season with parsley, salt, and black pepper.