In a large saucepan over medium-high heat, warm the oil until very hot but not smoking. Season the ribs with the salt and ½ teaspoon pepper. Add the ribs to the pan, in batches if necessary, and brown well on all sides, about 3 minutes total.
Transfer the ribs to a plate, pour off the oil, and return the ribs to the pan.
Add the chicken stock (and coconut milk, if using), vinegar, soy sauce, garlic, bay leaves, remaining 1 teaspoon black pepper, and whole chiles, if using.
Bring the mixture to a boil, then reduce the heat and simmer, partially covered, until the meat is tender and falling off the bone, about 1 hour and 20 minutes, skimming off excess fat as you cook.
Transfer the ribs to a plate, increase the heat, and reduce the sauce until thickened, 10 to 15 minutes. Discard the bay leaves and chiles. Return the ribs to the sauce or arrange the ribs on a platter and pour the sauce on top.