Add a large pot or dutch oven to your stove over medium heat. Add 5 tbsp butter to the pot and allow it to melt. Then, add 4 large sliced onions.
Stir the onions in the pot until they start to really whither and brown. You can add extra butter if you think it’s necessary. This step could take anywhere from 30-60 minutes depending on the size of your onions, the type of pot you use, and the heat level you are using.
Once the onions have started to brown, add 1 tbsp granulated sugar and stir for another 20-30 minutes until the onions caramelize.
Once the onions have caramelized, add 1 tbsp all-purpose flour and stir for 30 seconds until the onions are coated.
Add ¼ cup of dry white wine to deglaze the pan. Stir for a few seconds to scrape up any browned bits on the bottom of the pan. Continue sauteeing until the wine cooks down.
Once the wine is gone from the pot, add the 8 cups beef stock, 1 tbsp minced garlic, 2 bay leaves, 2 sprigs thyme, ¼ tsp salt, and ¼ tsp black pepper.
Add the lid onto the pot and bring it to a boil. Reduce the heat to a simmer and simmer for 20 minutes.
Set out 6 oven-safe bowls. Put about 2 tablespoons of gruyere cheese in the bottom of the bowl, then evenly distribute the soup amongst the bowls. Place enough bread slices to cover the top of the soup, then sprinkle more gruyere cheese on top. Some people will add the bread to the bottom of the bowl instead. You can do this if you’d like.
Place the soup crocks on a cookie sheet and turn the oven to a High Broil. Place in the oven under the broiler and broil until the cheese starts to bubble and toast.
Enjoy!