Beat the egg in a large bowl. Add in garlic, milk, breadcrumbs, parmesan cheese, salt, ½ teaspoon ground black pepper, parsley, and ground beef. Mix well using your hands. Form into 1-inch meatballs.
Heat oil and butter in a large deep skillet over medium-high heat. In 2 batches, cook the meatballs until well browned on all sides and are almost fully cooked. Set aside on a platter.
Add the onion to the now empty skillet and cook until the onion starts to brown and is softened. Stir while cooking to scrape up any brown bits from the bottom of the pan. Add the mushrooms and continue to cook until they are tender. Stir in flour until the vegetables are thoroughly coated. Gradually stir in the beef broth. Bring the mixture to a boil, and continue to cook stirring constantly until the mixture is smooth and thick. Stir in ketchup, Worcestershire sauce, black pepper, and then add cayenne pepper to taste.
Add the meatballs to the gravy, reduce heat and simmer for 20-25 minutes uncovered