Place the beans in a large saucepan and cover with water 2 to 3 inches above the beans. Soak the beans overnight.
The next day, drain and rinse the beans. Return the beans to the saucepan and cover with fresh water by about 4 inches. Bring to a boil, then lower the heat and simmer for 1 to 1-1/2 hours or until the beans are tender but not bursting open.
While the beans are cooking, mix the ketchup, molasses, brown sugar, Worcestershire sauce, mustard, chili powder.
Preheat the oven to 350 degrees.
Cook the bacon in a large skillet over medium heat until crisp. Remove and drain the bacon on paper towels, crumble it, and set aside. Add the onion and garlic to the bacon drippings and cook over medium heat, stirring constantly, for 2 minutes. The onion should still be a little crunchy.
Drain the beans, reserving 2 cups of the bean water. Pour the beans into the bowl with the sauce and gradually pour the bean water to your favorite consistency. Add the bacon and onion and stir to combine well. Pour into a 13 x 9-inch baking dish and bake for 1 hour or until bubbly.
Baked beans will keep, refrigerated, for up to 1 week.