Season the beef short ribs generously with salt and pepper on all sides.
Heat oil in a large Dutch oven over medium-high heat. Sear ribs in batches until deeply browned on all sides, then transfer to a plate.
Reduce heat to medium. Add sliced onions to the pot and cook, stirring occasionally, for 45 to 60 minutes until dark brown and caramelized. Add a splash of water if they stick to the bottom.
Stir in minced garlic and cook for 1 minute until fragrant.
Deglaze the pot with red wine, scraping the bottom to release the fond. Simmer until the liquid reduces by half.
Return the short ribs and any accumulated juices to the pot. Add beef broth, thyme, and bay leaves.
Bring to a boil, then reduce heat to low. Cover and simmer for 2.5 to 3 hours until the meat is fork-tender.
Remove the ribs from the pot. Discard bones and excess fat, shred the meat, and return it to the soup.
Stir in balsamic vinegar and adjust seasoning with salt and pepper to taste.
Ladle soup into oven-safe crocks. Top each with toasted baguette slices and a generous layer of shredded Gruyère.
Place under a preheated broiler for 2 to 3 minutes until the cheese is melted, bubbly, and golden brown.