Prep your aromatics: Dice the onion and celery, slice the garlic, and peel and dice the potato. Keep everything similar in size so it cooks evenly.
Sauté the base: Warm 2 tablespoons of olive oil in a large pot over medium heat.
Add onion and celery with a pinch of salt. Cook 5–7 minutes until soft and translucent, stirring occasionally.
Add garlic and heat: Stir in the garlic and a pinch of red pepper flakes if using. Cook 30–60 seconds, just until fragrant.
Don’t let the garlic brown.
Simmer the potato: Add the diced potato and pour in the broth. Bring to a gentle boil, then reduce to a simmer. Cook 10–12 minutes, until the potato is tender when pierced with a fork.
Wilt the greens: Add the spinach in batches if needed.
Stir until it wilts down, 1–2 minutes. Turn off the heat.
Blend with basil: Add the basil leaves and lemon zest. Blend using an immersion blender directly in the pot, or carefully transfer to a standing blender in batches.
Blend until smooth and vibrant green.
Stir in Parmesan: Return the soup to low heat. Stir in the Parmesan until melted and smooth. If you want extra silkiness, add a spoonful or two of Greek yogurt or a splash of milk.
Do not boil after adding dairy.
Season and brighten: Add 1–2 teaspoons of lemon juice to taste. Season with salt and black pepper. The flavors should be balanced: savory, fresh, and lightly tangy.
Serve: Ladle into bowls.
Drizzle with a little olive oil, add a sprinkle of extra Parmesan, and crack some black pepper on top. Serve with crusty bread if you like.