Heat 2 tablespoons oil in a large skillet over medium heat. Add onions and saute until tender and translucent, about 7 to 10 mins.
In a medium mixing bowl, stir together the breadcrumbs and evaporated milk. Add the ground beef, cooked onions, egg, salt, parsley, and pepper. Mix until evenly combined. (I usually use my hands for this part.)
For the ground beef mixture into golfball-sized meatballs. (You can roll as you go, or pre-roll all the meatballs before cooking.)
Heat remaining 2 tablespoons oil in the same skillet. Add meatballs, working in batches as to not overcrowd the pan, and cook for about 10 minutes. Be sure to turn the meatballs so they browned on all sides.
Remove meatballs to a paper towel-lined plate to drain and repeat with remaining meatballs.
Once the meatballs are done cooking, add butter to the skillet to deglaze. Be sure to scrape all those brown bits off the bottom of the pan. Whisk in flour and allow to cook for 1 minute before whisking in the beef broth. Simmer until thickened slightly.
Add in cream, dried parsley, pepper, salt, onion powder, and garlic powder. Whisk to combine.
Transfer the meatballs to a serving bowl and pour the sauce all over the meatballs. (Use all the sauce!) garnish with fresh parsley and serve immediately.
If you prefer to use raw onion, substitute 1/2 medium yellow onion finely diced and add it to the ground beef as directed.
You can freeze the meatballs once you've cooked them. Place meatballs on a baking sheet in the freezer. Once frozen, transfer to a ziploc freezer bag for long-term storage. Defrost in the fridge before warming in the sauce.
When I make these meatballs to serve with egg noodles, I double the sauce recipe so there's enough for the meatballs and pasta. We get about 6 servings from the recipe.
You can make the meatballs and sauce ahead of time, pop everything into a slow cooker and keep on the WARM setting. I do this for parties and potlucks all the time.