Let short ribs sit at room temperature for 20-30 minutes. Pat completely dry and season generously with salt and pepper.
Preheat oven to 325°F (163°C). Heat olive oil in Dutch oven over medium-high heat. Sear ribs in batches for 3-4 minutes per side until deeply browned. Transfer to a plate.
Reduce heat to medium-low. Add butter to pot, then add sliced onions, sugar, salt, and thyme sprigs. Cook for 30-40 minutes, stirring every 5-7 minutes, until deeply golden brown and very soft.
Add minced garlic and cook for 1 minute until fragrant. Pour in red wine and increase heat to medium-high, scraping up browned bits. Simmer for 3-5 minutes until reduced by half.
Add beef broth, Worcestershire sauce, carrot chunks, and bay leaves. Stir and bring to a gentle simmer. Nestle seared short ribs into the broth, cover, and transfer to oven.
Braise for 2.5 to 3 hours until meat is fork-tender and nearly falling off the bone. Remove pot from oven and transfer ribs to a plate to cool slightly.
Skim excess fat from broth. Discard bay leaves and thyme sprigs. Remove bones from ribs and shred meat into bite-sized pieces. Return meat to pot and keep warm over low heat.
Preheat oven to 425°F (218°C) or turn on broiler. Arrange baguette slices on baking sheet, brush with melted butter, and toast for 5-7 minutes. Top with shredded Gruyère and return to oven for 2-3 minutes until bubbly and golden brown.
Ladle hot soup into bowls, ensuring each serving has plenty of meat, onions, and broth. Top each bowl with 1-2 Gruyère toasts and serve immediately while cheese is melted.