Heat the olive oil in a large skillet over medium heat. Add the spinach and garlic and cook, stirring constantly, until the spinach is wilted, 2 to 3 minutes. Add the mixture to a blender or food processor, pour in 1/4 cup hot water and pulse until pureed. Set aside.
Melt the butter in a large soup pot over medium heat. Add the onion and cook until it begins to soften, about 5 minutes. Sprinkle in the flour and stir to combine. Cook for about 2 minutes, then pour in the milk, stirring occasionally. Add 2 teaspoons salt, the cayenne and a few grinds of black pepper and stir to combine. Cook, stirring constantly, until slightly thickened, about 5 minutes.
Pour in the pureed spinach and cook until thickened, 3 to 5 more minutes. If the soup is too thick, stir in more warm water or milk. Check the seasonings, adding more salt, black pepper or cayenne as needed. Ladle into bowls and top with parsley and/or chives.