Heat the oil, broth, or water in a soup pot and add the onion. Sauté over medium heat until translucent, then add the garlic if desired. Continue to sauté until the onion is golden.
Add the broth and broccoli. Bring to a simmer, then cover and simmer gently until the broccoli is tender but not overcooked, about 8 to 10 minutes.
Add the beans or tofu and half the green peas. Continue to cook just until everything is nicely heated through.
The easiest way to puree this soup is to simply insert an immersion blender into the pot and puree until it’s as smooth as you’d like it to be. You can also leave it a bit chunky. If you don’t have an immersion blender, transfer the mixture to a regular blender and puree (don’t overprocess!), then transfer back to the soup pot. Add enough nondairy milk to give the soup a medium-thick consistency.
To finish the soup, add the remaining green peas, the finely chopped broccoli florets, the chopped herbs, and the lemon juice. Stir together, then season with salt and pepper.
Cook over very low heat for 5 minutes longer, or until the finely chopped broccoli florets are tender-crisp, then serve.