Preheat the oven to 350°F (175°C) if using a baking dish for a crispy top.
In a large saucepan or Dutch oven, cook the chopped bacon over medium heat until crispy. Remove the bacon and set aside, but leave a little bacon grease in the pan for flavor.
Add the chopped onion to the remaining grease and sauté until soft, about 5 minutes.
In a large mixing bowl, combine the canned baked beans, cooked ham, sautéed onions, brown sugar, barbecue sauce, Dijon mustard, Worcestershire sauce, garlic powder, black pepper, and smoked paprika (if using). Stir well to combine.
Fold in the crispy bacon, reserving a small amount for garnish if desired.
Pour the bean mixture into the saucepan or transfer to a baking dish for a crispy top and bake in the preheated oven for 30–35 minutes, until bubbly.
Remove from the oven and let it cool slightly before serving. Garnish with reserved bacon if desired.