Preheat oven to 300°F Heat oil in a large Dutch oven over medium-low heat. Add onions and cook, stirring occasionally, until lightly browned and very soft, about 20 minutes.
Increase heat to high; add chili powder, cumin, paprika and cayenne and cook, stirring, until fragrant, 1 minute. Add beer, ketchup, vinegar, mustard, tomato paste, chipotle pepper and adobo sauce; bring to a boil. Reduce heat to medium-low and simmer, uncovered, stirring occasionally, until the sauce is slightly thickened, 10 minutes. Meanwhile, trim all visible fat from the pork.
Remove the pan from the heat and add the pork, spooning sauce over it. Cover the pan, transfer to the oven and bake for 1 1/2 hours. Turn the pork over, cover, and bake for 1 1/2 hours more. Uncover and bake until a fork inserted into the meat turns easily, 1 to 2 hours more.
Transfer the pork to a large bowl and cover with foil. Pour the sauce into a large measuring cup or glass bowl and refrigerate until the fat and sauce begin to separate, 15 minutes. Skim off the fat. Return the sauce to the pan and heat over medium-high until hot, about 4 minutes.
Remove the bone and any remaining pieces of fat from the meat. The bone should easily slip away from the tender meat. Pull the pork apart into long shreds using two forks. Add the hot sauce to the meat; stir to combine. Serve hot.