Spaghetti and meatballs is one of my favorite comfort-food dinners when I want something hearty, satisfying, and packed with classic Italian-inspired flavors. I make tender homemade beef and lamb meatballs, brown them until flavorful, and let them slowly simmer in a rich tomato sauce with garlic, herbs, and fresh basil. I serve everything over spaghetti with plenty of sauce and, when I want an extra savory finish, freshly grated Parmesan.
Ingredients
(Tip: You’ll find the full list of ingredients and measurements in the recipe card below.)
For the Meatballs:
½ cup bread crumbs (55 g)
¼ cup chopped parsley (10 g)
½ cup grated Parmesan (40 g)
2 large eggs
3 garlic cloves, minced
1½ teaspoons salt
¾ teaspoon ground black pepper
1 pound ground beef (450 g)
1 pound ground lamb (450 g)
3 tablespoons olive oil
For the Tomato Sauce:
1 small yellow onion, finely chopped (155 g)
4 garlic cloves, minced
¼ to ½ teaspoon red pepper flakes, optional
2 (28-ounce/794 g) cans crushed tomatoes
½ cup water
1 bay leaf
1 teaspoon dried oregano
2 teaspoons salt
1 teaspoon ground black pepper
½ cup chopped fresh basil
For the Pasta and Serving:
1 (16-ounce/454 g) package spaghetti
Grated Parmesan, for serving, optional
Fresh basil, for garnish, optional
Directions
Prepare the Meatball Mixture:
I start by adding the bread crumbs, chopped parsley, Parmesan, eggs, minced garlic, salt, and black pepper to a large bowl. I mix these ingredients together before adding the ground beef and ground lamb.
Once the meat is in the bowl, I gently mix everything with my hands until just combined. I avoid overworking the mixture because that can make the finished meatballs dense instead of tender.
Shape the Meatballs:
I divide the mixture into approximately 18 meatballs, making each one about 2 ounces. I roll them gently so they hold their shape without packing the meat too tightly.
Brown the Meatballs:
I heat the olive oil in a large pot over medium heat. Working in batches so I don’t overcrowd the pot, I brown the meatballs on all sides for about 6–8 minutes.
At this stage, I am mainly developing a flavorful browned exterior because the meatballs will finish cooking in the sauce. Once browned, I transfer them to a plate and set them aside.
Build the Tomato Sauce:
I remove excess oil from the pot, leaving about 2 tablespoons behind. I add the finely chopped onion and cook it for approximately 5 minutes, stirring occasionally and scraping the flavorful browned bits from the bottom of the pot.
Then I stir in the minced garlic and red pepper flakes, if I’m using them, and cook for another minute.
Next, I add the crushed tomatoes, water, bay leaf, dried oregano, salt, and black pepper. I stir everything together and bring the sauce to a gentle simmer.
Simmer the Meatballs:
I carefully return the browned meatballs to the tomato sauce. I don’t stir immediately because I want the meatballs to keep their shape.
Then I cover the pot, reduce the heat to low, and let everything simmer gently for 1 hour. I carefully stir the sauce about every 15 minutes. Once the sauce and meatballs have finished simmering, I stir in the chopped fresh basil and remove the bay leaf.
Cook the Spaghetti:
During the final 15 minutes of simmering, I cook the spaghetti according to the package directions until it reaches my preferred texture.
Before draining it, I reserve about 1 cup of the pasta cooking water. I toss the drained spaghetti with approximately 2 cups of tomato sauce, adding a splash of reserved pasta water when necessary to help the sauce evenly coat the noodles.
Serve:
I divide the sauced spaghetti among plates and top each portion with meatballs and additional tomato sauce. I finish each serving with grated Parmesan and fresh basil when desired.
Servings and Timing
This recipe makes approximately 6 servings, with about 18 meatballs in total.
Prep Time: 35 minutes
Cooking Time: 1 hour
Total Time: 1 hour 35 minutes
Servings: 6
Calories: approximately 790 kcal per serving
Variations
All-Beef Meatballs:
When I don’t have ground lamb available, I replace it with an equal amount of ground beef. This creates a more traditional beef-forward flavor while keeping the preparation essentially the same.
Spicier Tomato Sauce:
When I want more heat, I increase the amount of red pepper flakes. I can also sprinkle extra flakes over individual portions so I can adjust the heat without making the entire pot spicy.
Different Pasta Shapes:
Spaghetti is my classic choice, but I also like serving these meatballs with linguine, bucatini, rigatoni, or another pasta that holds plenty of tomato sauce.
Extra-Herby Meatballs:
For an even fresher flavor, I sometimes add finely chopped basil or a small amount of dried oregano directly to the meatball mixture.
Cheese-Filled Meatballs:
When I want an especially rich variation, I place a small cube of mozzarella in the center of each meatball before shaping it. I make sure the meat completely surrounds the cheese so it stays inside as the meatballs cook.
Storage/Reheating
For leftovers, I prefer storing the meatballs and tomato sauce separately from the cooked spaghetti whenever possible. This helps prevent the pasta from absorbing too much sauce and becoming overly soft.
I refrigerate cooled meatballs and sauce in an airtight container for up to 3–4 days. I keep leftover cooked spaghetti in a separate airtight container for a similar amount of time.
For longer storage, I freeze the cooled meatballs together with the tomato sauce in a freezer-safe container. I usually prepare fresh pasta when I’m ready to serve them again because its texture is better than frozen and reheated spaghetti.
To reheat the meatballs and sauce, I place them in a covered saucepan over medium-low heat and warm them gently until heated throughout, stirring occasionally. If the sauce has thickened in the refrigerator, I add a small splash of water.
For an individual portion, I can also reheat the pasta, sauce, and meatballs in the microwave until thoroughly hot, stirring partway through for more even heating.
FAQs
Can I Make Spaghetti and Meatballs Ahead of Time?
Yes. I often make the meatballs and tomato sauce ahead of time because their flavors develop nicely as they sit. I refrigerate them after cooling, then gently reheat them while I cook a fresh batch of spaghetti before serving.
How Do I Keep Homemade Meatballs Tender?
I keep my meatballs tender by mixing the meat only until the ingredients are combined. Overmixing or tightly compressing the meat can create firm, dense meatballs. The bread crumbs and eggs also help create a moist, tender texture.
Do I Have to Brown the Meatballs Before Adding Them to the Sauce?
I prefer browning them because the caramelized exterior adds considerable savory flavor to both the meatballs and the tomato sauce. The browned bits left in the pot also become part of the sauce when I cook the onions and scrape the bottom. While meatballs can be cooked directly in sauce, I find that browning produces a richer result.
Can I Use Only Ground Beef Instead of Beef and Lamb?
Absolutely. I can replace the pound of ground lamb with another pound of ground beef without making major changes to the recipe. The flavor will be slightly different and less rich, but the meatballs will still pair beautifully with the tomato sauce.
Why Do I Save Pasta Water?
I save some of the starchy pasta cooking water because it helps loosen the tomato sauce and makes it cling more evenly to the spaghetti. I add only a small amount at a time until the pasta has the consistency I want.
Conclusion
This spaghetti and meatballs recipe is the kind of comforting homemade dinner I can return to again and again. The combination of tender beef and lamb meatballs, slowly simmered tomato sauce, fresh herbs, Parmesan, and spaghetti creates a satisfying meal with plenty of classic flavor.
I especially like that most of the cooking happens in one pot once the meatballs have been browned. After an hour of gentle simmering, I end up with tender meatballs and a rich sauce that’s ready to spoon generously over freshly cooked spaghetti. Finished with Parmesan and basil, it’s a hearty meal I enjoy serving straight from the stove.
📖 Recipe:
Print
Spaghetti and Meatballs
- Total Time: 1 hour 35 minutes
- Yield: 6 servings (approximately 18 meatballs)
- Diet: Halal
Description
Tender homemade beef and lamb meatballs are browned and slowly simmered in a rich, garlicky tomato-basil sauce, then served over spaghetti. Finish with freshly grated Parmesan and basil for a hearty Italian-inspired comfort-food dinner.
Ingredients
½ cup bread crumbs (55 g)
¼ cup chopped parsley (10 g)
½ cup grated Parmesan (40 g)
2 large eggs
3 garlic cloves, minced
1½ teaspoons salt
¾ teaspoon ground black pepper
1 pound ground beef (450 g)
1 pound ground lamb (450 g)
3 tablespoons olive oil
1 small yellow onion, finely chopped (155 g)
4 garlic cloves, minced
¼ to ½ teaspoon red pepper flakes, optional
2 (28-ounce/794 g) cans crushed tomatoes
½ cup water
1 bay leaf
1 teaspoon dried oregano
2 teaspoons salt
1 teaspoon ground black pepper
½ cup chopped fresh basil
1 (16-ounce/454 g) package spaghetti
Grated Parmesan, for serving, optional
Fresh basil, for garnish, optional
Instructions
- Add the bread crumbs, parsley, Parmesan, eggs, 3 minced garlic cloves, 1½ teaspoons salt, and ¾ teaspoon black pepper to a large bowl and mix. Add the ground beef and ground lamb and gently mix with your hands just until combined.
- Divide the mixture into approximately 18 meatballs, about 2 ounces each. Shape gently without tightly packing the meat.
- Heat the olive oil in a large pot over medium heat. Working in batches, brown the meatballs on all sides for about 6–8 minutes. Transfer the browned meatballs to a plate.
- Remove excess oil from the pot, leaving about 2 tablespoons. Add the onion and cook for about 5 minutes, stirring occasionally and scraping up the browned bits. Add the remaining 4 minced garlic cloves and red pepper flakes, if using, and cook for 1 minute.
- Add the crushed tomatoes, water, bay leaf, oregano, 2 teaspoons salt, and 1 teaspoon black pepper. Stir and bring to a gentle simmer.
- Carefully return the meatballs to the sauce. Cover, reduce the heat to low, and simmer gently for 1 hour, carefully stirring about every 15 minutes. Stir in the chopped basil and remove the bay leaf when finished.
- During the final 15 minutes of simmering, cook the spaghetti according to the package directions. Reserve about 1 cup pasta cooking water before draining.
- Toss the drained spaghetti with approximately 2 cups of tomato sauce. Add a splash of reserved pasta water as needed to help the sauce coat the spaghetti.
- Divide the spaghetti among plates and top with meatballs and additional tomato sauce. Serve with grated Parmesan and fresh basil, if desired.
Notes
Avoid overmixing or tightly packing the meatball mixture to keep the meatballs tender.
For all-beef meatballs, replace the ground lamb with an equal amount of ground beef.
For a spicier sauce, increase the red pepper flakes or add extra flakes when serving.
Spaghetti can be replaced with linguine, bucatini, rigatoni, or another favorite pasta.
For extra-herby meatballs, add finely chopped basil or a small amount of dried oregano to the meat mixture.
For cheese-filled meatballs, place a small cube of mozzarella in the center of each meatball and completely enclose it with meat.
Store cooled meatballs and sauce separately from cooked spaghetti in airtight containers in the refrigerator for up to 3–4 days.
Freeze cooled meatballs with the tomato sauce in a freezer-safe container and prepare fresh pasta when ready to serve.
Reheat meatballs and sauce gently in a covered saucepan over medium-low heat, adding a splash of water if the sauce is too thick.
- Prep Time: 35 minutes
- Cook Time: 1 hour
- Category: Main Course
- Method: Stovetop
- Cuisine: Italian-Inspired
Nutrition
- Serving Size: 1/6 of recipe
- Calories: 790 kcal
- Sugar: 12 g
- Sodium: 1450 mg
- Fat: 38 g
- Saturated Fat: 13 g
- Unsaturated Fat: 22 g
- Trans Fat: 0.5 g
- Carbohydrates: 73 g
- Fiber: 7 g
- Protein: 40 g
- Cholesterol: 155 mg
