Put the oil in the Dutch oven (or large cast iron skillet with a cover). Turn on the heat to medium -high. Add the onions and simmer about 5 minutes until the onions are softer and golden.
Add the cut pork (along with the bones) and brown the meat for 5-8 minutes. You want the meat to be brown on the outside.
Reduce the heat to low. Add the garlic and let cook about 30 seconds. Add all the spices (ancho chile, chili powder, cinnamon, and cumin) as well as the bay leaves. Mix and let simmer for about 1 minute.
Add the orange and/or lime juice(s) with the water. Mix well. Cover and let cook about 2 hours. Mix from time to time. If it becomes a bit dry, add more water.
Start checking if it's done after 1 1/2 hours, as it may take less time. It's ready when the meat starts falling off of the bones. If you have too much water, remove cover and continue cooking at low heat to let water evaporate.
Remove all the bones. Make sure to remove any small bones remaining. Although adding the bones creates a bit of extra work, I think the flavor they give as well as the health benefits of cooking meals with bones at least once a week are well worth the trouble.
The carnitas will be ready to serve at this point. However, if you like your carnitas more crispy or caramelized, you can spread the meat out on a baking pan and put it under the broiler about 5 minutes. This step is optional.
Serve the carnitas as you wish, with the side dishes put on the table for everyone to serve. Enjoy!