Preheat the oven to 350°F (175°C).
Render the bacon: In an oven-safe skillet over medium heat, cook the chopped bacon until crispy, about 6–8 minutes. Use a slotted spoon to transfer the bacon to a plate, but leave the rendered fat in the skillet that fat is the base of the whole sauce.
Sauté the onion: Add the diced onion directly to the bacon fat and cook for 3–4 minutes, until softened and translucent.
Build the sauce: Stir in the ketchup, brown sugar, molasses, mustard, Worcestershire sauce, pepper, and salt. Simmer for 2 minutes, stirring, until everything is combined into a glossy sauce.
Add the beans and bacon back in: Fold in the drained beans and most of the cooked bacon (save a small handful for topping later), stirring until every bean is coated in sauce.
Bake uncovered: Transfer the skillet to the oven and bake, uncovered, for 40–45 minutes, until the sauce has thickened and reduced slightly and the top edges are just starting to darken. Baking uncovered matters here a covered dish traps steam and keeps the sauce thin, while uncovered baking lets excess liquid evaporate so the sauce actually clings to the beans instead of pooling around them.
Stir in the vinegar off the heat, after baking not before. This is the step that changes everything. If you add the vinegar before baking, the acid mellows out completely over 45 minutes in the oven, and you lose it. Stirred in right at the end, it cuts through the sweetness and bacon fat with a bright edge that makes the whole dish taste balanced instead of one-note sweet. Pro tip: taste before and after adding the vinegar the difference is bigger than the tiny amount would suggest.
Top and serve: Sprinkle the reserved bacon over the top and serve warm, straight from the skillet.