Melt 2 tablespoons butter in a large skillet over medium heat. Cook and stir onion and 1 1/2 teaspoons salt in butter until onion begins to turn translucent, about 6 minutes.
Transfer onion mixture to a large bowl. Add milk, eggs, bread crumbs, black pepper, nutmeg, allspice, and cayenne pepper to the breadcrumb mixture; stir to combine.
Mix beef and pork into the bread crumb mixture. Cover with plastic wrap and refrigerate for 1 hour.
Melt 2 tablespoons butter in a large skillet over medium heat; whisk flour into butter and cook until golden brown, 4 to 5 minutes. Slowly whisk beef broth into butter mixture.
Increase heat to medium-high, whisk cream into mixture and bring to a simmer. Stir sugar and Worcestershire sauce into gravy. Simmer until slightly thickened, 6 to 7 minutes. Season with salt and black pepper. Remove from heat and set aside.
Preheat oven to 425 degrees F (220 degrees C). Line a baking sheet with aluminum foil and lightly coat foil with cooking spray.
Roll 2 to 3 tablespoons meatball mixture into a ball using wet hands; repeat with remaining meatball mixture. Place meatballs on the prepared baking sheet.
Bake in the preheated oven until browned, about 20 minutes. An instant-read thermometer inserted into the center should read at least 160 degrees F (70 degrees C).
Transfer meatballs to the gravy and cook over medium-low heat until warmed through, about 5 minutes.