In a large bowl, add ground beef, bread crumbs, milk, egg, parmesan cheese, parsley, garlic, onion powder, Italian seasoning, salt, and Worcestershire Sauce. Mix until just combined and don't overmix. Roll into 1½ meatballs and place on parchment paper.
Heat olive oil in a large skillet over medium-high heat. Add meatballs in batches, cooking on each side for 2 minutes. Remove and set aside.
Add butter and melt, then add onions and cook until soft and translucent. Remove and set aside, leaving drippings in the pan.
Lower the heat to medium and melt ¼ cup of butter. Then sprinkle flour over the drippings and whisk it in to make a roux. Add garlic powder, onion powder, black pepper, and beef broth. Whisk continuously until the gravy starts to thicken.
Add the onions and meatballs to the gravy and toss to coat. Lower the heat to low and let simmer for 10 minutes.
Serve over mashed potatoes or rice and enjoy!