First, prepare and measure out all of the soup ingredients.
Next, heat the butter in a Dutch oven, or large pot, over medium heat. Add the sliced onions, salt, and pepper and toss to combine. Reduce the heat to low and cook the onions for about 40 minutes, or until the onions are very soft, stirring occasionally with a wooden spoon.
Then, increase the heat back up to medium and cook for 15 to 20 more minutes, stirring often, until the onions are golden brown.
Add the balsamic vinegar, thyme, bay leaves, and garlic to the onions and stir. Sprinkle the flour on the onions, stir, and cook for 2 minutes. Add the beef broth and simmer the soup over medium heat for 30 minutes.
While simmering, arrange a rack in the upper third of the oven and preheat it to 350°F.
Next, portion the soup evenly into oven-safe bowls and place the bowls on a rimmed baking sheet.
Then, top each soup bowl with a slice or 2 of the toasted baguette and a generous amount of Gruyère cheese.
Bake the topped soup bowls for 20-30 minutes, or until the cheese is completely melted.
If bubbly cheese is desired, turn the oven to broil. Broil the soups for 2 to 3 minutes, until the cheese is bubbling and browned. Remove the bowls from the oven and let cool for a few minutes.
Finally, serve the French onion soup with fresh chives and enjoy!
Notes
To store French Onion soup: first, transfer it to an airtight container or Ziploc bag and label the date on the outside. Store for 3 to 4 days in the refrigerator, or in the freezer for up to 3 months. Remember to freeze the bag of soup flat at first for easy storage. Thaw the frozen soup in the fridge overnight before reheating.