Melt butter in a large pot or Dutch oven over medium heat. Add onions and cook, stirring occasionally, until caramelized and golden brown, about 30-40 minutes. Add sugar during the last 5 minutes of cooking.
Stir in flour and cook for 1 minute. Gradually whisk in beef broth and Worcestershire sauce. Add bay leaf. Bring to a boil, then reduce heat and simmer for 15-20 minutes.
Preheat broiler. Place French bread slices on a baking sheet and broil for 1-2 minutes per side, or until lightly toasted.
Remove bay leaf from soup. Ladle soup into oven-safe bowls. Top each bowl with a slice of toasted French bread and sprinkle with gruyere cheese.
Broil for 2-3 minutes, or until cheese is melted and bubbly. Serve immediately.