Preheat the oven to 350 degrees . Season the ribs with salt and pepper. In a large Dutch oven or pot, heat 2 tbsp. oil over medium-high. Working in batches, cook the ribs, turning occasionally, until browned all over, 10 to 12 minutes. Transfer to a bowl.
Add the celery, carrot, bay leaves and herb sprigs to the Dutch oven; reduce the heat to medium. Cook, stirring often, until the vegetables are softened, about 6 minutes. Add the chopped shallots; cook, stirring often, until the shallots are softened, 2 to 4 minutes. Add the wine and simmer to slightly reduce, about 5 minutes. Stir in the stock then add the short ribs, arranging on their sides to fit in a single layer. Braise in the oven, turning the ribs halfway through, until the beef is tender, about 2 1/2 hours.
Meanwhile, in a large deep skillet, heat 3/4 inch oil over medium until a deep-fry thermometer registers 300 degrees . Separate the sliced shallots into rings. Working in batches, fry the shallots, stirring occasionally, until golden brown, about 3 minutes. Using a slotted spoon, transfer to a strainer set over a bowl, season with salt and shake off the excess oil. Spread out on a paper towel-lined plate.
Transfer the ribs to a plate. Set a fine-mesh strainer over a medium bowl; strain the mixture from the pot, pressing on the solids to release liquid. Discard the solids. Skim the fat from the top of the juices and add enough water to measure 2 cups. Return to the pot; bring to a simmer. In a small bowl, mash the butter and flour until blended. Add to the sauce; whisk to blend over medium heat. Simmer until thickened, about 5 minutes. Return the ribs with any juices to the pot and turn to coat. Simmer to heat through, about 5 minutes. Transfer to a platter and spoon the sauce around the ribs. Top with the fried shallots and finely chopped parsley.