Melt 3 tablespoons butter in a large saucepan. Saute onions until tender, about 10 minutes. Add spinach, basil or watercress (see Cook's Note), and parsley. Cover, reduce heat to low, and simmer 10 minutes.
Stir in broth and sugar. Simmer, covered, for 30 minutes. Slowly stir in cream.
In a separate pan, melt 2 tablespoons butter over medium heat. Stir in flour and cook, stirring constantly, until flour loses its raw smell, about 2 minutes. Whisk in a little of the hot soup into the flour mixture, mixing until smooth. Pour roux mixture slowly into the soup, stirring constantly. Bring just to a boil, and remove from heat. Season with salt and pepper to taste.