Season the short ribs. Preheat oven to 350 F. Heat a large dutch oven over high heat for 5 minutes. Meanwhile, season beef ribs on all sides with 1 Tbsp salt and ½ tsp pepper. When very hot, add 2 Tbsp canola or vegetable oil to pan.
Sear the ribs. Sear the short ribs on all sides until golden brown, about 2-3 minutes per side, for a total of 12-15 minutes. If your dutch oven won’t comfortably fit all the ribs, sear them in batches. Transfer seared ribs to a plate, then reduce heat to medium-high. At this point you can drain all but 2 Tbsp of fat from the pan if you’d like (but nothing will happen if you don’t!). Add onion, carrots, and garlic, then cook, stirring occasionally, until translucent – about 3 minutes.
Break up the tomatoes. Add whole tomatoes either by crushing them with your hands directly into the pot or by pouring them in and breaking up with the back of a wooden spoon. Add tomato paste, then stir until dissolved into sauce.
Add remaining liquid. Pour in 2 cups red wine, 1-2 cups beef or chicken stock, and ¼ cup soy sauce, then bring to a boil.
Return ribs to the pot, along with any juices on the plate. Using kitchen twine, tie together thyme and rosemary, then place in the pot with the bay leaves. Cover with lid, then transfer to preheated oven and cook until tender and falling off the bone, about 2 ½ – 3 hours.
Shred the meat. Use tongs to carefully remove the beef ribs and place in a large bowl. Cool until you’re able to handle the beef with your hands. Discard beef bones, then using your hands or two forks, shred the beef.
Strain, then serve. Drain the braising liquid into a serving bowl, discarding the vegetables and herbs. Return pulled beef to the braising liquid.