Heat olive oil in a large pot or Dutch oven over medium heat. Add the sliced fennel and chopped shallots and cook until softened, about 5-7 minutes. Add the minced garlic and cook for another minute until fragrant.
Add the diced potato, white beans, vegetable broth, salt, and pepper to the pot. Bring to a boil, then reduce the heat to a simmer. Cook for 15-20 minutes, or until the potatoes are tender when pierced with a fork.
Use an immersion blender to pulse about 6-8 times to puree about half of the soup. (Alternatively, you can transfer half of the soup to a regular blender, blend until smooth, and stir it into the rest of the soup.)
Stir in the chopped broccoli florets and cook for 3-5 minutes until the broccoli has softened. Add the spinach, stirring until it has wilted completely. Taste and season with more salt and pepper if desired, and stir in the heavy cream if using.
Ladle the soup into bowls. Top each serving with a generous sprinkle of hemp seeds and a few chopped fennel fronds for garnish.
Notes
Freezing and reheating - This soup can be frozen for up to 6 months and defrosted overnight in the fridge. Warm up in the microwave or heating over medium low heat in a pot.
Cannellini beans can be substituted with other white beans like great northern beans or navy beans.
The heavy cream is completely optional. Leave it out for a dairy free or vegan soup. It just provides even more creaminess!