Heat the olive oil in a skillet over medium heat. Add the spinach and cook, stirring, until wilted. Transfer it to a plate and let it cool. Squeeze out excess moisture, then chop it finely.
In a small bowl, mix the cream cheese, mozzarella, chopped spinach, and artichoke hearts until evenly combined.
In a large bowl, combine the ground beef, breadcrumbs, egg, milk, ketchup, Worcestershire sauce, garlic powder, salt, and black pepper. Mix gently just until combined.
Lay a large piece of parchment paper on the counter. Pat the meat mixture into a rectangle about ½ inch thick. Spread the spinach-artichoke mixture down the center, leaving a border around the edges.
Use the parchment to help fold the meat over the filling. Pinch the seam and both ends closed, then shape the loaf with the seam underneath. Check for gaps so the filling is enclosed.
Heat a smoker to 250°F. Place the meatloaf on a sheet of foil or in a smoker-safe pan. Smoke until the center reaches 160°F on an instant-read thermometer, about 2½ to 3 hours depending on the loaf’s thickness.
Brush the barbecue sauce over the top during the last 20 minutes of smoking. Remove the meatloaf from the smoker and let it rest for 10 minutes before slicing.