Melt the butter in a large Dutch oven or soup pot over medium heat. Add the onions and saute for 20 minutes, stirring frequently. Add the garlic and saute 10 minutes more.
Add the thyme and 1 cup of the beef broth. Deglaze the pan, stirring to loosen the cooked pieces on the bottom. 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-30 minutes. Stir in balsamic vinegar and season with salt and pepper, to taste. Discard bay leaf.
Adjust an oven rack to the middle position and heat the oven to 400°F. While the soup is simmering, arrange the bread slices on a baking sheet and toast in the oven just until barely browned (about 5 minutes). Remove and set aside.
Switch the oven to the broiler. Place oven-safe soup bowls on a rimmed baking sheet. Ladle soup into the bowls.
Top each bowl with 2 slices of toast and sprinkle with about ¼ cup of cheese.
Place on an oven rack about 6 inches from the heat and broil for 2-3 minutes, or until the cheese is melted and bubbly. Keep a close eye on the broiler so that the bread and cheese don’t burn.