Preheat oven to 350°F. Season ribs to taste with the salt and pepper.
Heat 2 tablespoons oil in a large, heavy-bottomed ovenproof pan over high heat. Add half the ribs and brown on all sides. Remove the ribs to a plate. Add the remaining 2 tablespoons oil and brown remaining ribs. Transfer ribs to a plate.
Add the onions, celery, and carrots to the pan and sauté, stirring frequently until tender, about 5 minutes.
Add the wine to the pan, deglazing the pan, scraping off any browned bits from the bottom of the pan. Reduce the wine by three-quarters until thick and slightly syrupy, about 15 minutes on high heat.
Return the ribs to the pan, add the beef stock and enough water to cover the ribs. Bring to a boil, cover with lid or foil, and place in the oven. Braise, cooking in the oven, until the meat is fork-tender, 2 to 2 ½ hours.
Remove from oven. Use a turkey baster or spoon to remove excess fat from the top of the cooking liquid. (Or, cool to room temperature and refrigerate overnight.)*
Cook on the stovetop over medium heat, uncovered until the liquid has reduced by three-quarters, about 1 hour. Continue to cook, spooning the sauce over the ribs, until the sauce is thick and ribs are glazed. Take care not to burn the glaze; move the ribs around in the pan to keep them from burning.
Serve over mashed potatoes, egg noodles, or rice.