Break the bread slices into pieces and place in a large bowl. Pour the milk over them and let the bread soak for about 10 minutes.
To the same bowl add the remaining meatball ingredients. Mix well using your clean hands. Shape the meatball mixture into balls around the size of a golf ball.
Heat the olive oil in a large skillet. Add the meatballs and saute until brown and cooked through. Turn them often so they hold their shape. You might also need to do this in a couple batches, depends on how big or small your meatballs are and the size of your skillet. It should take about 10 to 15 minutes per batch.
Transfer the meatballs to a plate and set aside. If there's too much oil in your skillet, drain some of it out. You need about 1 tbsp of fat remaining in skillet.
Add the onion and garlic to the skillet and cook for about 3 to 5 minutes until onion is soft and becomes translucent. Deglaze the pan with the chicken broth and scrape all the brown bits from the meatballs, this will add flavor to the sauce. Add the crushed tomatoes, red pepper flakes, salt, pepper and basil springs. Stir and bring to a boil. Reduce the heat to a simmer, cover the skillet with a lid and simmer for about 20 to 30 minutes, stirring occasionally. The sauce should reduce a bit.
While the sauce is simmering cook the spaghetti according to package instructions. Reserve about 1 cup of the pasta water.
If your sauce is too thick, add some of the pasta water to thin it out a bit until desired consistency is achieved.
Place pasta in a large bowl and add about 1 to 2 cups of the sauce to the pasta and toss well. Add the meatballs to the remaining sauce in the skillet and toss. Serve the meatballs over spaghetti, sprinkled with Parmesan cheese and garnished with parsley or basil.