Mix orange juice with olive oil in a bowl, stir and set aside. Place pork shoulder in a container and season heavily with salt and pepper. Place into a 2-gallon zip closure bag (you can also put it into a container, but you will need to flip every few hours to distribute marinade). Pour all of the marinade over the pork and squeeze out as much air as possible. Place into a container to prevent leakage and place into the refrigerator for six to 24 hours, flipping once or twice if possible.
After marinating, remove the pork and marinade. In a shallow pan with a lid that will hold the pork (plastic wrap and foil can substitute a lid after cooking), place as many onions as you can under the pork with the fat side of the pork up, and add water to the marinade until liquid comes about one third up the side of the pork. Place in the oven at 300 degrees without the lid.
Cook for 3.5 to 5 hours (basting every 30 to 45 minutes, adding more water if needed) until the internal temperature reaches 190 degrees. Remove from the oven and place on the stove or a hot pad, cover with the lid or plastic wrap, then foil and let sit for an hour.
Transfer to a cutting board, drizzle with some of the cooking liquid and serve, or use for making Cuban sandwiches.