Rinse and pick through beans removing any small pebbles or debris. Transfer beans to a large pot and pour in enough water to cover by about 2". Cover the pot and let the beans soak overnight.
The next day, drain the beans and cover with the same amount of fresh water. Bring to a boil, then reduce heat to low, cover the pot, and let simmer for 1 hour. Drain beans, reserving liquid.
Quick Soak Method:
Rinse beans; place in a large pot and add enough water to cover by about 2". Bring to a boil; reduce heat and simmer for 3 minutes. Remove from heat and let stand for 1 hour. Drain and rinse. Return beans to pot and add same amount of fresh water; bring to a boil. Reduce heat; simmer for 1 hour or until beans are tender. Drain, reserving cooking liquid.
To Cook The Soaked Beans:
In a large oven safe pot, Dutch oven or baking dish, combine soaked beans, 1 cup cooking liquid, onion, ketchup, brown sugar, molasses, salt, mustard, pepper, bay leaf, and bacon (only add bacon if not using ham bone). Mix well.
If using ham bone, tuck it into the beans. Cover and bake at 300 degrees for 4-½ to 5 hours or until beans are very tender and sauce has thickened to desired consistency. Stir occasionally and add more of the reserved cooking liquid if needed during cooking time.
At end of cooking time remove and discard bay leaf. Remove ham bone (if using) to a cutting board and pull off any good meat with a fork and return it to the beans. Discard bone and fatty meat. Taste beans and season with additional salt and pepper, if needed.
