Sweat the aromatics. Warm the olive oil in a large pot over medium heat.
Add the onion with a pinch of salt and cook until translucent, about 5–7 minutes. Stir in the garlic and cook 30–60 seconds, until fragrant.
Soften the zucchini. Add the sliced zucchini, black pepper, and red pepper flakes if using. Cook 3–4 minutes, stirring occasionally, to lightly soften and pick up flavor.
Add broth and simmer. Pour in the broth.
Bring to a gentle boil, then reduce to a simmer. Cook 10–12 minutes, until the zucchini is tender when pierced with a fork.
Wilt the spinach. Turn off the heat. Add the spinach and stir until it wilts and turns a deep green, about 1–2 minutes.
This keeps the color bright and the flavor fresh.
Blend until silky. Use an immersion blender to puree the soup right in the pot until very smooth. Or transfer carefully to a countertop blender in batches and blend. Return the soup to the pot if needed.
Finish with cream and lemon. Stir in the cream, lemon zest, and lemon juice.
Taste and adjust salt, pepper, and acidity. The lemon should lift the flavors without making the soup sour.
Serve and garnish. Ladle into bowls. Top with a drizzle of olive oil, a dollop of yogurt, chopped herbs, or toasted seeds for crunch.