Heat your large pot over medium heat and add the butter or oil. Once melted and shimmering, toss in the chopped onion. Sauté for about 5 minutes until the onion is translucent and starts to turn golden at the edges, filling your kitchen with a sweet aroma.
Add the minced garlic to the pot and cook for 1-2 minutes, stirring constantly. You'll notice a fragrant, nutty aroma as the garlic releases its scent, but be careful not to let it brown too much, or it might turn bitter.
Gradually add the chopped spinach in batches, stirring as it wilts quickly and turns a vibrant green. Continue adding until all the greens are in the pot, cooking for another 2-3 minutes until tender and fragrant.
Pour in the vegetable broth, then bring the mixture to a gentle simmer. Let it cook uncovered for about 10 minutes, allowing the flavors to meld and the greens to become fully tender. The broth will take on a subtle green hue with a fresh aroma.
Remove the pot from heat, then carefully blend the soup until silky smooth using an immersion blender directly in the pot or by transferring it to a blender in batches. Aim for a velvety texture with no fibrous bits remaining.
Stir in the heavy cream or coconut milk, then season with salt and pepper to taste. Taste the soup and adjust seasoning if needed, ensuring a balanced, flavorful profile.
Finish by adding a tablespoon of lemon juice, which will brighten the flavors and cut through the richness. Stir well to incorporate, then give the soup a final taste and adjust seasoning if necessary.
Ladle the hot, creamy soup into bowls, and if desired, garnish with a drizzle of cream or fresh herbs. Serve immediately for the best vibrant color and silky texture.