Melt the butter and olive oil in a large pot over medium heat. Add the onions and sugar, and cook, stirring frequently, until the onions are caramelized, about 30 minutes.
Add the white wine to deglaze the pot, scraping up any browned bits from the bottom. Cook for another 5 minutes.
Add the beef broth, and bring the mixture to a boil. Reduce the heat and let it simmer for 20 minutes. Season with salt and pepper to taste.
Preheat the oven's broiler. Ladle the soup into oven-safe bowls, place a slice of toasted French bread on top of each bowl, and sprinkle generously with grated gruyere cheese.
Place the bowls on a baking sheet and broil until the cheese is melted and bubbly, about 3-4 minutes. Serve hot.