Melt butter in a large skillet over medium-high heat. Add the onions and cook until onions are soft and begin to brown. Remove from heat and set aside.
In a large mixing bowl, combine the beef, pork, breadcrumbs, milk, egg yolks, allspice, and nutmeg. Add the cooked onions. Using clean hands, mix the meatball mixture until it is thoroughly combined. Use a small cookie scoop or rounded teaspoonfuls and roll the meatball mixture into meatballs.
Place 2 tablespoons oil in a large, deep skillet. Heat over medium-high heat. Add the meatballs (in batches if necessary) and brown the outsides. Transfer browned meatballs to a baking dish while you finish the remaining meatballs. Bake meatballs in a preheated oven for 20-25 minutes or until cooked through.
For the gravy, melt butter in the same skillet over medium-high heat. Whisk in the flour until smooth. Gradually whisk in the beef broth and continue to cook and whisk constantly until slightly thickened, about 5 minutes. Lower heat to low and stir in sour cream. Season with salt and pepper. Add the cooked meatballs into the sauce, stirring to coat.
To serve, garnish with chopped parsley if desired.
Notes
This recipe is easily doubled to feed a crowd.
Traditionally, Swedish Meatballs are served with mashed potatoes or boiled potatoes and lingonberry jam. I'm also a fan of serving them over wide egg noodles or rice, depending on my mood. You can also swap lingonberry jam for red currant jam if desired.
Not a fan of ground pork? You can use all ground beef.
To freeze
Meatballs only - One of the great things about meatballs is you can freeze them uncooked or cooked! According to the USDA, uncooked ground meat is freezer-safe for up to three to four months, and cooked ground beef is safe for two to three months.
Meatballs with Gravy - To freeze this dish, place the meatballs and gravy in an airtight freezer-safe container. Freeze up to 3 months. Thaw in the refrigerator overnight, then reheat, thinning the sauce with water if necessary.