Soak the beans in water overnight or for up to 48 hours.
In a large skillet, fry the bacon slowly until all the fat is rendered and the bacon is crispy. Drain most of the fat from the skillet and set the bacon aside.
Return the skillet to the stove, add the onions and garlic, and cook until softened. Add the water and bring it to a boil to deglaze the pan.
Transfer the contents of the skillet to a large covered roasting pan. Add the crispy bacon, soaked and drained beans, and all other ingredients. Stir well to combine.
Cover the roasting pan and place it in a preheated oven at 325°F. Bake for 4 to 5 hours, stirring occasionally, until the beans are tender and the sauce is thickened.
If the sauce thickens too quickly before the beans are fully cooked, add a little extra boiling water (about 1 to 1 1/2 cups at a time) as needed throughout the cooking process.