Preheat oven to 425°F and line a baking sheet with foil. Trim top and bottom of each onion, peel, slice top to bottom, and separate the two outer layers. Set aside 8 sets.
In a large bowl, mix ground beef, breadcrumbs, egg, milk, 3 tbsp barbecue sauce, garlic powder, onion powder, salt, and pepper until just combined.
Divide meat into 8 portions. Flatten each into a patty, place a cheddar cube in the center, and seal into a meatball.
Wrap each meatball with 2 onion halves. Adjust for a snug fit.
Lay 2 bacon strips in an X, place the onion-wrapped meatball in the center, and wrap bacon around. Secure with toothpicks if needed.
Place seam-side down on the sheet. Bake for 30 minutes.
Brush with remaining ⅓ cup barbecue sauce. Bake another 10–15 minutes until bacon is crisp and temp hits 160–165°F.
Cool for 5 minutes before serving. Cheese will be hot inside.