Serves 6-8. Can be made ahead and frozen.
3 Tbsp olive oil
2 Tbsp butter
6 cups onions, peeled, thinly sliced
1 Tbsp kosher salt
1 Tbsp sugar
2 Tbsp best balsamic vinegar (I use Rubio)
3 Tbsp unbleached all-purpose flour
3/4 cup dry white wine
3 quarts homemade beef stock
Kosher salt and fresh black pepper, to taste (you'll need plenty of both)
1/4 cup grated Gruyere cheese
Slices of French bread
1 clove garlic, peeled
In a Dutch oven or heavy stockpot, heat the oil and butter over low heat. Add the onions, and cook, stirring frequently, for 1 hour, until the onions are very soft but not yet beginning to brown. Stir in 1 Tbsp kosher salt and the sugar, and cook for 15 minutes. Add vinegar and cook for 5 minutes. Stir in flour, and cook for 1 minute until the flour is incorporated and starts to bubble. Add the wine, then the beef stock.
Raise the heat to medium, until the soup boils, then reduce heat and simmer for 30 minutes. Adjust the taste with salt and pepper; if you've used homemade stock, you'll need plenty of both. Remove from the heat and set aside, covered. (At this point you can let the soup cool completely, and refrigerate or freeze it. Reheat before serving.)
Turn the broiler on.
Cut the bread into 1/2-inch slices, and place the slices on a rimmed baking sheet. Toast briefly until the bread is lightly browned. Remove the baking sheet from the oven, and rub the toasted sides of the bread with the garlic clove. Flip the bread, and top each with a bit of cheese. Place the baking sheet under the broiler until the cheese is melted.
Ladle the soup into serving bowls, and top each with one or two cheese-covered croutons. Serve hot.