To make the meatballs, place the ground meats, bread crumbs, parsley, Parmesan, salt, pepper, onion powder, egg, and 1/2 cup warm water in a large bowl. Mix lightly with a fork. Use your hands to lightly form the meatballs. Mine were around 2 inches, but you can make them smaller or larger based on your personal preference.
Place meatballs in the refrigerator for at least one hour to rest. Remove from fridge 30 minutes prior to cooking to allow them to reach room temperature.
To cook the meatballs, pour vegetable oil in a deep frying pan to a depth of 1/4 inch. Brown the meatballs in batches, turning carefully with a fork or spatula to brown all sides. Remove to a paper towel lined plate to drain. When all of the meatballs are browned, discard the oil but do not clean the pan.
To make the sauce, heat the olive oil in the same pan. Saute the onions until translucent and soft, about 10 minutes. Add the garlic and red pepper flakes and cook for 1 minute more. Turn the heat to high and add the wine, using it to deglaze the pan. Continue cooking the wine on high heat for 3 minutes, until most of the liquid has evaporated. Stir in the tomato puree, diced tomatoes, sugar, salt, pepper, and parsley.
Return the meatballs to the sauce, cover, and simmer for 25 to 30 minutes until the meatballs are cooked through.
Serve over hot, cooked spaghetti and sprinkle with Parmesan.
(This is delicious right after being made, but the second day it is even better!)