Pat the short ribs dry, season all sides with salt and pepper, and sear in olive oil in a Dutch oven over medium-high heat for 3 to 4 minutes per side until deeply browned. Transfer to a plate and set aside.
Pour red wine into the hot pot and scrape up browned bits. Let reduce for 2 to 3 minutes, then add beef broth, Worcestershire sauce, balsamic vinegar, garlic, thyme, and bay leaves. Return ribs and any juices to the pot.
Bring liquid to a gentle simmer, cover, and transfer to a 325°F (165°C) oven. Braise for 2½ to 3 hours until meat pulls away from the bone with almost no resistance. Remove ribs to a plate to cool.
Melt butter with olive oil in a large skillet over medium-low heat. Add sliced onions, sugar, and salt. Cook slowly for 30 to 40 minutes, stirring often, until soft, jammy, and deep golden brown. Sprinkle flour over onions and cook 1 to 2 minutes more.
Remove bones and large fat pieces from cooled ribs, then shred meat with two forks. Skim excess fat from braising liquid and discard thyme stems and bay leaves. Stir in caramelized onions and shredded beef, then simmer 15 to 20 minutes. Taste and adjust salt or balsamic.
Arrange baguette slices on a baking sheet and toast under the broiler for 1 to 2 minutes per side until crisp and lightly golden. Watch closely to prevent burning.
Ladle hot soup into oven-safe crocks on a rimmed baking sheet. Top each with 2 toasted baguette slices and about ⅓ cup (33 g) shredded Gruyère. Broil for 2 to 3 minutes until cheese is melted, bubbly, and browned in spots. Cool 1 minute and serve.