Combine the breadcrumbs and milk in a large bowl and let the mixture stand for 5 minutes. Add the ground beef, ground pork, egg, garlic, Worcestershire sauce, salt, garlic powder, onion powder, smoked paprika, and black pepper. Mix gently until evenly combined, then shape the mixture into about 18 meatballs.
Heat 1 tablespoon of oil in a large deep skillet over medium-high heat. Brown half of the meatballs for 5 to 6 minutes, turning to color several sides. Transfer them to a plate and repeat with the remaining oil and meatballs. The centers will finish cooking in the gravy.
Reduce the heat to medium. Add the butter and sliced onion to the same skillet. Cook for 8 to 10 minutes, stirring often, until the onion is soft and lightly browned. Sprinkle in the flour and cook for 2 minutes, stirring constantly.
Slowly whisk in the beef broth until smooth. Stir in the Worcestershire sauce, garlic powder, thyme, and black pepper. Bring the gravy to a gentle simmer and cook for 3 to 4 minutes, stirring, until it begins to thicken.
Return the meatballs and any collected juices to the skillet. Reduce the heat to medium-low, cover, and simmer for 15 to 18 minutes, turning the meatballs once, until they reach 160°F in the center. If needed, uncover and simmer for 2 to 4 minutes to thicken the gravy. Add a splash of broth if the gravy becomes too thick, then season with salt to taste.
Serve the meatballs and onion gravy over hot white rice. Garnish with parsley or green onions if desired.