Combine all of the ingredients in a large bowl. Mix thoroughly until completely combined. If the mixture feels a little wet, add extra breadcrumbs until it is a little tackier. If the mixture feels dry or grainy, add a little extra milk.
Roll out meatballs about a ¼ cup in size. This should provide 20-24 meatballs.
Fill the pan with olive oil about a half-fingernail deep. Raise the heat to medium heat. Once hot, place your meatballs into the pan. Do this in batches and do not crowd the pan.
Fry the meatballs for 1 minute on each side until browned, 4-5 minutes total. Remove the meatballs from the pan when they are browned all around and set them aside. We will finish cooking them in the sauce.
You can fry all the way through to 165℉ if you don't plan on adding them to simmering sauce.
In the same pot, add a little olive oil. Add in sliced garlic and saute for 1-2 minutes. Pour in 2 28-oz cans of crushed tomatoes or hand-crush 2 cans of whole plum tomatoes yourself. Add basil and salt, and bring to a simmer.
Transfer the meatballs to the sauce and allow them to simmer for at least 30 minutes but up to 2 hours. Remove the meatballs from the sauce and serve. Use the rest of the sauce in the pot to serve with pasta.
Video
Notes
I prefer to use a cast iron pan or stainless steel pan to fry meatballs if I'm not cooking them in the same pot as the sauce. It is best not to use a non-stick pan because you won't get a crust on the meatballs. Cast-iron and stainless steel retain heat really well, so all of the meatballs cook evenly and develop a nice brown crust
I used a ¼ cup of oil but depending on the size of your pan this can differ. You want the oil to be about half a fingernail deep in the pan.
Usually, I'm making meatballs with Sunday sauce. I simmer them in the sauce for 2-3 hours. The longer you simmer them, the softer they will be.
Don't overwork the meatballs. The more you mix together the meat, the denser it will get which will result in hard meatballs.