In a large bowl add the eggs, breadcrumbs, ketchup, brown sugar, Worcestershire sauce, garlic powder, onion powder, salt, pepper, and paprika, stir to combine.
Add in the ground beef to the bowl and with hands or a spoon mix together until well combined, do not overmix this might make your meatballs chewy.
Roll the meat mixture into roughly 1 ½ tablespoon balls and place them on a baking sheet. Then place the baking sheet into the freezer for 10 minutes to harden up slightly..
In a dutch oven or large skillet that has deeper sides, add in the oil, about 1/4th inch up the side of the pan, place over medium heat. Once hot, fry the meatballs on both sides until golden brown, this will take about 5 minutes, they will not be cooked all the way through, this will be done in the gravy. Make sure you do this in batches to not overcrowd the pan.
Place the browned meatballs on a plate while making the rest of the meatballs.
Wipe out the excess grease from the bottom of the pan, leaving any bits stuck to the bottom of the pan from the meatballs. Add the butter and let it melt.
Add the onions, salt, and pepper, stirring to combine, and cook for roughly 10 minutes or until the onions have softened and slightly browned.
Add the garlic and stir until fragrant, 30 seconds.
Next, add in the flour and stir everything together. Cook in the flour for 1 minute to get out the taste.
Slowly stream in the beef stock while stirring constantly to try avoiding any lumps. Then add the Worcestershire sauce.
Add the meatballs back into the pot, and stir to coat in the gravy. Bring mixture to a simmer, simmer uncovered for 10 minutes, occasionally stirring until the meatballs reach an internal temperature of 165°F and the gravy has thickened. Taste the and adjust the seasoning as desired.
Serve over mashed potatoes or noodles with a garnish of fresh parsley.