To make this soup, start by heating the olive oil in a large soup pot or dutch oven, on the stove, over medium-low heat.
Next, dice the onion, garlic, and shallots and add them to the hot oil. Stir and sauté them for 3-4 minutes, until the onion is translucent.
Then, was and chop the carrots and celery and add them to the pot. Sauté for another 7-10 minutes - this is really important to ensure that the flavors build.
Prepare the beans. Rinse and drain the cannellini beans, and add them to the pot along with the bay leaves, Italian seasoning, red pepper flakes, vegetable broth, salt, and pepper.
Bring the soup mixture to a boil, then reduce the heat to low, cover, and simmer for another 15 minutes.
Next, remove the cover to pull out and discard the bay leaves.
Then, blend the soup. Transfer two cups of the soup to a high-speed blender and blend until it's thick and creamy.
Once the soup is blended, return it to the pot and stir generously.
Finally, add in the spinach and stir until it's wilted.
Once the soup is done, transfer it into bowls. Garnish it with fresh chopped parsley, if desired, serve with crusty bread, and enjoy!