Caramelize onions: Add butter and onions to a large pot over medium heat. Season with a little salt and pepper and cook until softened. Add sugar and continue to gently stir until onions become golden brown and caramelized, about 25 minutes. Careful to not let them burn! Maintain a medium to medium-low heat.
Add the flour and cook for 3 more minutes. Add beef stock, wine, thyme, celery, and bay leaves. Cook partially covered for 30 minutes.
Preheat oven to 350 degrees F.
Toast bread: Arrange bread on a baking sheet and brush with melted butter on both sides. Bake for 15 minutes, flipping to the other side half way through. Remove from oven and rub a cut clove of garlic onto each piece of bread.
Broil: Turn oven to High broil. Remove bay leaves and the piece of celery from the soup and ladle soup into 4 oven proof bowls. Place the toasted bread on top of each bowl. Depending on the size of your bowls you may need two slices of bread. Sprinkle the tops generously with both types of cheese. Broil until the cheese is browned and bubbling.
Video
Notes
Cheese: Could substitute Swiss.
Make Ahead Instructions: The soup base can be made a day in advance, stored in the fridge. Wait to add the bread and cheese until ready to serve. Reheat the soup on the stove, and then ladle into oven-safe bowls, add the bread and cheese. and broil,
Freezing Instructions: Store the soup, without bread and cheese, in a freezer safe container and freeze for up to 3 months. (The shredded cheese and bread may also be frozen separately).
Croutons: Croutons may be substituted for the bread slices.Vegetarian: Substitute vegetable broth for the beef broth along with 1 tablespoons of soy sauce. This will add a richness that will help mimic the richness of the beef broth.Vegan: Make the same substitution listed for Vegetarian, substitute olive oil for the butter, and use hemp seed crumble cheese and vegan gruyere.Gluten Free: Substitute gluten-free flour and gluten free artisan bread.