The night before, soak the beans in cold water in a large pot. In the morning, drain the beans, add fresh water (about 3" above beans) and simmer until very tender – about 1 hour. Drain cooked beans and reserve cooking liquid.
Heat the olive oil in a heavy bottomed pot over medium heat. Add the onion, carrot and fennel and saute for about 15-20 minutes until veggies are soft and onion has started to turn golden brown. Don’t skimp on this step because it adds so much flavor for the soup later!
Add the garlic, rosemary, bay leaves and salt and saute for another 3 minutes. Then, add the water and the squash. Bring to a simmer and cook until squash is tender – about 15 minutes.
When the squash has become tender, add the beans and enough bean cooking liquid until you reach desired thickness. Keep in mind that this soup is supposed to be very thick so don’t add to much liquid here! Less is more. Add the spinach and cook just until the spinach has wilted.
Adjust seasonings if need be and serve soup topped with a tbsp (or more!) of freshly grated Parmesan cheese. Bread is always a good idea as well.