Easy Homemade Spaghetti and Meatballs with Tomato Sauce
These homemade spaghetti and meatballs combine tender beef meatballs, fresh pasta, and a well-reduced tomato sauce in one generous family dinner. The soaked bread keeps the meat soft without an egg, while a quick sear gives the sauce a deeper, roasted flavour. The mistake to avoid is crowding the pan: the meatballs should hiss and brown, not sit in a puddle of released moisture.
This recipe is based on my YouTube video, with a few adjustments made since publication so the quantities and cooking method are easier to reproduce. I now weigh the bread, use fresh garlic directly in the meat mixture, brown the meatballs in batches, and loosen the sauce as needed so it does not become too thick during the simmer.
{VIDEO}
What Makes This Recipe Different
Spaghetti and meatballs is an Italian-American pasta dish made with seasoned meatballs simmered in tomato sauce and served over spaghetti. My version uses pecorino, parsley, cumin, and milk-soaked bread, then finishes the browned meatballs gently in the sauce.
I make the mixture without an egg because the bread, beef proteins, and cheese already give it enough structure. What I look for is a moist, slightly tacky mixture that still holds its shape. This version is more pasta-focused than my beef meatballs in tomato sauce, more tomato-forward than Swedish-style meatballs, and more hands-on than my air-fryer meatballs.
It is a hearty, protein-rich meal, but a crisp salad or green vegetable keeps the plate balanced. It works as winter comfort food and also makes sense in summer when tomatoes and herbs are at their best.
Ingredients You Need
Use medium or 85% lean ground beef. Very lean meat can dry out, while very fatty beef may make the sauce greasy. Soft sandwich bread soaked in milk gives the meatballs tenderness. Squeeze off only loose liquid so the bread stays damp.
Season with kosher salt, pepper, cumin, a mild low-salt seasoning blend, pecorino, parsley, and fresh garlic. The house spice named in the original video was unclear, so a simple all-purpose blend is easier to reproduce reliably.
For the rest, you need thick tomato sauce, unsalted beef broth, fresh spaghetti, and a little oil or duck fat. My fresh tomato sauce is a natural base. You can also make fresh pasta without a machine. Keep broth or pasta water nearby because the sauce should coat a spoon while still flowing around the meatballs.

Step-by-Step Instructions
1. Soak the Bread
Cube the bread, pour over the milk, and let it stand for 10 minutes. It should collapse into a soft paste when pressed. Gently squeeze off loose liquid, but do not wring the bread dry.

2. Mix and Chill the Meatball Mixture
Combine the cold beef, soaked bread, seasonings, pecorino, parsley, and garlic. Mix only until evenly distributed. I work quickly because warm meat and overmixing create a tighter texture. Cover and refrigerate for 20 to 30 minutes so the mixture firms up.

3. Shape Evenly Sized Meatballs
Divide the mixture into 24 portions, about 1 1/2 to 1 3/4 ounces each. Wet your hands lightly and roll without compressing the meat. Equal size helps every meatball finish cooking at the same time.

4. Brown in Batches
Heat a wide skillet over medium-high heat with the oil or duck fat. Brown the meatballs in two or three batches for 4 to 6 minutes, turning to colour several sides. They do not need to cook through. The pan should sizzle steadily; if liquid collects, it is overcrowded.

5. Deglaze and Simmer in Tomato Sauce
Lower the heat, add the broth, and scrape up the browned bits. Reduce by half, add the tomato sauce, and return the meatballs to the pan. Simmer gently, partially covered, for 15 to 20 minutes. Add broth if the sauce becomes too thick. The meatballs are ready when springy and 160°F at the centre.

6. Cook the Fresh Spaghetti and Finish It in the Sauce
Cook the fresh spaghetti in salted boiling water for about 2 minutes, or 1 minute less than directed. Reserve pasta water, drain, and finish the noodles in the sauce for 1 minute. Add pasta water until the sauce looks glossy and coats the strands, the same technique used for fresh pasta with tomato sauce.

Twirl the spaghetti into warm bowls, add four meatballs, and spoon over extra sauce. Finish with parsley and pecorino. A cut meatball should look moist and evenly cooked, not dense or rubbery.

What to Serve With Spaghetti and Meatballs
A classic Greek salad or romaine and endive salad adds freshness. Air-fryer garlic bread can cook while the sauce simmers, and these easy vegetable sides for pasta and beef offer lighter pairings.
Substitutions
Replace up to half the beef with ground pork for softer, richer meatballs. Ground turkey works too, but use a blend with some fat and add 1 tablespoon olive oil. Parmesan may replace pecorino.
Use 12 ounces dried spaghetti if needed and finish it in the sauce while still slightly firm. Dry breadcrumbs can replace the bread, but add the milk gradually so the mixture stays moist rather than soupy. Dry white wine may replace the broth for deglazing. For a finer meat sauce instead of separate meatballs, make homemade Bolognese.

FAQ
Do Meatballs Need an Egg to Hold Together?
No. Soaked bread, cheese, and the beef proteins provide enough binding, especially after chilling. An egg is useful only with unusually dry meat or coarse crumbs, and it makes the texture firmer.
Why Are My Meatballs Tough?
Common causes are lean meat, overmixing, tight shaping, or a hard boil. Mix briefly, shape gently, and keep the sauce at a quiet simmer.
Can I Bake the Meatballs Instead of Frying Them?
Yes. Bake on a lightly oiled sheet pan at 425°F for 12 to 15 minutes, then simmer in sauce until the centres reach 160°F. The skillet method gives the sauce more browned flavour.
Can I Make This Ahead?
Yes. Shape and refrigerate the meatballs up to one day ahead, or cook the meatballs and sauce up to three days ahead. Reheat gently and cook the spaghetti fresh.
Can Spaghetti and Meatballs Be Frozen?
Freeze the cooked meatballs with sauce for up to three months. Cool promptly, pack airtight, and thaw overnight in the refrigerator. Freshly cooked spaghetti has the best texture.
How Many Meatballs Does This Recipe Make?
It makes about 24 medium meatballs, enough for six generous servings or eight smaller ones.
Suggested Posts
Browse my ground-beef dinner collection, try one-pan rigatoni with ground beef, or prepare a mozzarella-topped beef pasta bake. For more ideas, see these weeknight pasta dinners and the homemade pasta guide.

Easy Homemade Spaghetti and Meatballs with Tomato Sauce
Ingredients
- 2.2 lb medium or 85% lean ground beef
- 3 oz soft sandwich bread cubed
- 1/2 cup milk
- 2 tsp kosher salt
- 1 tsp ground black pepper
- 1 tsp ground cumin
- 1 tsp mild all-purpose seasoning blend
- 1/2 cup finely grated pecorino plus more for serving
- 1/4 cup finely chopped flat-leaf parsley plus more for serving
- 2 tsp finely grated fresh garlic
- 1 tbsp neutral oil or duck fat
- 1/2 cup unsalted beef broth plus more as needed
- 3 to 4 cups thick tomato sauce
- 21 oz fresh spaghetti
- 4 qt water
- 2 tbsp plus 1 tsp fine sea salt
- Reserved pasta water as needed
Instructions
- Soak the cubed bread in the milk for 10 minutes, then gently squeeze off only the loose excess liquid.
- Combine the cold beef, soaked bread, salt, pepper, cumin, seasoning blend, pecorino, parsley, and garlic. Mix just until evenly combined, then chill for 20 to 30 minutes.
- Divide the mixture into 24 portions of about 1 1/2 to 1 3/4 oz each and roll gently into meatballs.
- Heat the oil or duck fat in a wide skillet over medium-high heat. Brown the meatballs in batches for 4 to 6 minutes, turning to colour several sides.
- Pour the broth into the skillet and scrape up the browned bits. Reduce by half, add the tomato sauce, and return all the meatballs to the pan.
- Simmer gently, partially covered, for 15 to 20 minutes, adding broth if needed, until the centres reach 160°F.
- Cook the fresh spaghetti for about 2 minutes or 1 minute less than directed. Reserve pasta water and drain.
- Finish the spaghetti in the sauce for 1 minute, loosening with pasta water until glossy. Serve with four meatballs per portion, pecorino, and parsley.





