Sauté the aromatics: Warm the olive oil or butter in a large pot over medium heat. Add the onion with a pinch of salt.
Cook, stirring often, until soft and translucent, about 5–7 minutes. Add the garlic and cook for 30 seconds, just until fragrant.
Add zucchini (and potato, if using): Stir in the sliced zucchini and the diced potato. Season with a little more salt and pepper.
Cook for 3–4 minutes to soften the edges and build flavor.
Pour in the broth: Add the broth and bring it to a gentle boil. Reduce to a simmer and cook until the zucchini (and potato) are very tender, about 10–12 minutes.
Blend until smooth: Use an immersion blender to puree the soup in the pot until silky. Or transfer in batches to a countertop blender, vent the lid, and blend until smooth.
Return to the pot if needed.
Finish and balance: Stir in the lemon juice and taste. Add cream or coconut milk if you’d like a richer finish. Adjust salt and pepper.
If the flavor feels flat, add another squeeze of lemon or a pinch more salt.
Serve: Ladle into bowls and top with herbs, Parmesan, croutons, or a drizzle of olive oil. Serve warm.