In a large skillet, heat the olive oil 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.
In a large soup pot, cook the onions in the butter over medium heat until the onions begin to soften. Sprinkle the flour over the top and stir to combine. Cook for about 2 minutes, then pour in the milk, stirring occasionally. Add the salt, cayenne and some black pepper and stir to combine. Cook over medium heat for 5 minutes, stirring constantly. Pour in the pureed spinach, then cook until thickened, another 3 to 5 minutes.
Check the seasonings, adding more salt, black pepper or cayenne as needed. Serve warm.