Season the short ribs with salt and pepper. In a large Dutch oven, heat olive oil and butter over medium-high heat. Sear the short ribs on all sides until browned, about 5-7 minutes. Remove the ribs and set aside.
In the same pot, add the sliced onions and reduce the heat to medium. Cook, stirring occasionally, until caramelized and golden brown, about 25-30 minutes. Add minced garlic and cook for an additional minute.
Deglaze the pot by pouring in the red wine, scraping up any browned bits from the bottom. Allow the wine to reduce by half, about 5 minutes.
Return the short ribs to the pot and add the beef broth, thyme, and bay leaf. Bring to a simmer, cover, and reduce the heat to low. Cook for about 2 hours, until the short ribs are tender.
Remove the short ribs from the pot, shred the meat, and discard the bones. Return the shredded meat to the soup and season with additional salt and pepper if needed.
Preheat your oven’s broiler. Place the slices of bread on a baking sheet and top each slice with grated Gruyère cheese.
Broil the bread in the oven for about 2-3 minutes, or until the cheese is bubbly and golden brown.
Serve the soup hot in bowls, topped with Gruyère toast on the side or floating on top.