Caramelize the onions: Melt the butter in a large Dutch oven or soup pot over medium heat. Add the onions and saute for 20 minutes, stirring frequently, until deep golden and reduced to about a third of their original volume.
Add the garlic: Stir in the minced garlic and saute 10 minutes more, stirring often so nothing scorches.
Deglaze the pot: Add the thyme and 1 cup of the beef broth, stirring and scraping to loosen the browned bits from the bottom of the pot.
Build and simmer the broth: Add the remaining beef broth, Worcestershire sauce, and bay leaf. Increase the heat to medium-high and bring to a boil. Reduce the heat to low and simmer for 20 to 30 minutes.
Finish and season: Stir in the balsamic vinegar, discard the bay leaf, and season with salt and pepper to taste.
Toast the bread: While the soup simmers, adjust an oven rack to the middle position and heat the oven to 400°F. Arrange the bread slices on a baking sheet and toast just until barely browned, about 5 minutes. Remove and set aside.
Fill the bowls: Switch the oven to broil. Place oven-safe soup bowls on a rimmed baking sheet and ladle in the soup.
Add the topping: Top each bowl with 2 slices of toast and sprinkle with about 1/4 cup of the shredded cheese.
Broil: Place the baking sheet on an oven rack about 6 inches from the heat and broil for 2 to 3 minutes, until the cheese is melted and bubbly. Watch closely so the bread and cheese do not burn.