Peel onions; cut off and discard root ends. Using a large French chef's knife, slice onions thinly (about 5 cups). Put butter in a 4 qt. saucepan and heat over moderately high heat until butter melts. Add onions and ground pepper to butter. Saute' onion mixture, stirring frequently with a wooden spoon, until onions are a light golden brown. Sprinkle onions with flour and stir until all traces of flour disappear. Cook 1 minute longer, stirring constantly with wooden spoon. Remove from heat.
Gradually add beef broth, stirring onion mixture constantly; stir in water and bay leaf. Return to moderately high heat and bring mixture to a boil, stirring constantly. Reduce heat to low and cook onion soup, uncovered, for 30 to 40 minutes. Discard bay leaf.
Salt and pepper to taste. Turn soup into a broilerproof soup tureen, casserole or individual onion-soup bowls on a jelly-roll pan. Toast the French bread slices in a toaster or under the broiler until they are a light golden brown. Arrange toast slices on top of onion soup (do not push them down under the soup.) Sprinkle the toast liberally with the Parmesan and grated Gruyere cheese. Place broiler proof tureen or bowls 6 inches under a preheated broiler or place in an oven preheated to 425 degrees. Broil or bak the soup until cheese melts and turns golden. Remove from oven and serve immediately.
For smaller families, prepare soup ahead and serve later.