Some meals are just worth the time. This
Italian Spaghetti Sauce with Meatballs is one of them. Tender homemade beef meatballs simmer for half an hour in a rich, slow-cooked tomato sauce that’s been bubbling away for over an hour — and the result is pure, soul-warming comfort.
The sauce is made from scratch with whole peeled tomatoes, garlic, onion, basil, and a touch of sugar to balance the acidity. It simmers low and slow, developing a deep, rich flavor that no jarred sauce can match. The meatballs are simple — ground beef, breadcrumbs, Parmesan, parsley, and egg — and they cook right in the sauce, soaking up all that tomato goodness.
Prep takes 20 minutes, the sauce simmers for about 2 hours, and it serves 6 with 12 meatballs. Serve it over spaghetti with extra Parmesan, and you have a classic family dinner that tastes like it came from your favorite Italian restaurant.
Recipe Card
Italian Spaghetti Sauce with Meatballs 🍝
Tender homemade beef meatballs simmered in a rich tomato sauce—perfect for spooning over spaghetti for a comforting family dinner.
Prep: 20 minutes |
Cook: 2 hours 5 minutes
Servings: 6 |
Makes: 12 meatballs
For the meatballs
- 1 pound lean ground beef
- 1 cup fresh breadcrumbs
- 1 tablespoon dried parsley
- 1 tablespoon grated Parmesan cheese
- ¼ teaspoon ground black pepper
- ⅛ teaspoon garlic powder
- 1 large egg, beaten
For the sauce
- ¼ cup olive oil
- ¾ cup chopped onion
- 5 garlic cloves, minced
- 2 (28-ounce) cans whole peeled tomatoes, with juices
- 2 teaspoons salt, or to taste
- 1 teaspoon sugar
- 1 bay leaf
- 1 (6-ounce) can tomato paste
- ¾ teaspoon dried basil
- ½ teaspoon ground black pepper
For serving
- 12–16 ounces spaghetti, cooked according to package directions
- Extra grated Parmesan, optional
Instructions
- Make the meatballs: Gently combine all meatball ingredients in a large bowl. Shape into 12 evenly sized balls. Cover and refrigerate while preparing the sauce.
- Cook the aromatics: Heat olive oil in a large, heavy saucepan over medium heat. Add onion and garlic; cook for about 5 minutes until softened, without browning.
- Simmer the tomatoes: Add tomatoes and their juices, breaking them up with a spoon. Stir in salt, sugar, and bay leaf. Cover and simmer over low heat for 90 minutes, stirring occasionally.
- Add the meatballs: Stir in tomato paste, basil, and black pepper. Carefully lower the uncooked meatballs into the gently simmering sauce.
- Finish cooking: Cover and simmer for approximately 30 minutes, until the meatballs reach 160°F (71°C) in the center. Stir gently to avoid breaking them.
- Serve: Remove the bay leaf. Spoon sauce and meatballs over hot spaghetti and finish with Parmesan, if desired.
Why This Recipe Works
Whole peeled tomatoes make a richer, more authentic sauce. Unlike crushed or diced tomatoes, whole peeled tomatoes break down slowly as they simmer, creating a sauce with body and texture. Crushing them by hand or with a spoon gives you control over the final consistency.
The 90-minute simmer develops deep, layered flavor. This is the step that separates a good sauce from a great one. As the tomatoes cook down, their natural sweetness intensifies and the flavors of the garlic, onion, and bay leaf meld together into something rich and complex.
A teaspoon of sugar balances the acidity. Tomatoes can be quite acidic, and a little sugar rounds out the flavor without making the sauce sweet. It’s a classic Italian trick that makes a big difference.
The meatballs cook directly in the sauce. As they simmer, they release their juices into the sauce, adding flavor and richness. In turn, the sauce infuses the meatballs with tomato goodness. It’s a beautiful exchange.
Fresh breadcrumbs keep the meatballs tender. Stale bread pulsed in a food processor creates light, airy breadcrumbs that hold moisture and keep the meatballs soft. Dry breadcrumbs from a can will make them denser.
Gently combining the meatball ingredients prevents toughness. Overmixing develops the proteins in the beef, resulting in dense, tough meatballs. Mix just until combined, and handle the meat gently when shaping.
Simmering the meatballs gently keeps them intact. A rolling boil will break them apart. A gentle simmer cooks them through while keeping them whole and tender.
The tomato paste adds richness and body. Stirred in before the meatballs go in, it deepens the color and flavor of the sauce and thickens it slightly.
Pro Tips for Perfect Results Every Time
Use fresh breadcrumbs, not dried. Pulse stale Italian bread or a baguette in a food processor until you have coarse, even crumbs. Fresh breadcrumbs make the meatballs lighter and more tender.
Soak the breadcrumbs in a little milk if they’re very dry. A tablespoon or two of milk moistens the breadcrumbs and ensures a tender meatball. Skip this if your breadcrumbs are already soft.
Mix the meatball ingredients gently. Use your hands or a fork and stop as soon as everything is combined. Overmixing makes the meatballs tough.
Shape the meatballs evenly. Evenly sized meatballs cook at the same rate. Use a kitchen scale or an ice cream scoop to portion them evenly.
Chill the meatballs while you make the sauce. This helps them hold their shape when they hit the hot sauce.
Use a heavy-bottomed saucepan. A heavy pan distributes heat evenly and prevents the sauce from scorching on the bottom.
Cook the onion and garlic without browning. You want them soft and fragrant, not caramelized. Medium heat and about 5 minutes is all you need.
Crush the tomatoes by hand or with a spoon. Hand-crushing gives you a rustic, textured sauce. If you prefer a smoother sauce, use an immersion blender after the sauce has simmered.
Simmer the sauce low and slow. A gentle simmer is key. A rolling boil will reduce the sauce too quickly and can make it taste bitter.
Stir occasionally, scraping the bottom of the pan. This prevents the sauce from sticking and burning.
Add the meatballs gently. Lower them into the sauce one at a time with a spoon. Don’t drop them in, or they’ll splash and break apart.
Simmer the meatballs gently, not vigorously. A gentle simmer cooks them through without breaking them apart. Stir gently and only occasionally.
Check the meatballs for doneness with a thermometer. The meatballs are ready when they reach 160°F (71°C) in the center. This is the most reliable way to know they’re fully cooked.
Remove the bay leaf before serving. Bay leaves are not meant to be eaten. Fish it out before spooning the sauce over the spaghetti.
Serve with extra Parmesan. A generous sprinkle of freshly grated Parmesan on top adds richness and a salty finish.
Variations and Substitutions
Use ground turkey or chicken. Substitute the beef with ground turkey or chicken for a lighter version. Add an extra tablespoon of Parmesan and a drizzle of olive oil to keep them moist.
Use a mix of ground meats. A combination of ground beef, pork, and veal makes a classic Italian meatball with more depth of flavor.
Add Italian sausage. Brown ½ pound of Italian sausage and add it to the sauce along with the meatballs for extra flavor.
Make it spicier. Add red pepper flakes to the sauce or use spicy Italian sausage.
Add red wine. A splash of dry red wine added after the onions and garlic are softened adds depth and complexity to the sauce.
Use fresh herbs instead of dried. Fresh basil, oregano, or parsley can be substituted for the dried herbs. Use about three times the amount of fresh herbs.
Make it a slow cooker sauce. Combine the sauce ingredients in a slow cooker and cook on LOW for 6–8 hours. Add the meatballs during the last hour of cooking.
Make it gluten-free. Use gluten-free breadcrumbs in the meatballs and serve over gluten-free pasta.
Make it dairy-free. Skip the Parmesan in the meatballs and use a dairy-free Parmesan alternative on top.
Make it a meatball sub. Spoon the meatballs and sauce into hoagie rolls, top with mozzarella, and broil until the cheese is melted.
Storage and Reheating
Refrigerator: Store the sauce and meatballs in an airtight container in the refrigerator for up to 4 days. The flavor will continue to develop.
Reheating: Reheat gently on the stovetop over medium-low heat, stirring occasionally. Add a splash of water if the sauce looks thick. Avoid boiling, which can break the meatballs apart.
Freezer: This sauce and meatballs freeze beautifully. Cool completely, transfer to freezer-safe containers, and freeze for up to 3 months. Thaw overnight in the refrigerator, then reheat gently on the stovetop.
Make ahead: This is an excellent make-ahead meal. Make the sauce and meatballs up to 3 days in advance and store them in the refrigerator. Reheat gently and serve over fresh spaghetti.
Reheating leftovers: Warm individual portions in the microwave in 1-minute intervals, stirring between each. Reheat the spaghetti separately or toss it directly into the hot sauce.
Food safety: Since this dish contains meat, don’t leave it at room temperature for more than 2 hours. Refrigerate leftovers promptly.
What to Serve With It
This spaghetti and meatballs is a complete meal on its own, but a few sides round it out beautifully:
- Garlic bread or crusty Italian bread for soaking up the sauce
- A crisp Caesar salad or Italian garden salad
- Bruschetta with fresh tomatoes and basil
- Antipasto platter with olives, cheese, and cured meats
- Roasted broccoli or sautéed spinach with garlic
- A glass of red wine — Chianti or Sangiovese pair beautifully
Frequently Asked Questions
Can I use dried breadcrumbs instead of fresh?
Yes, but fresh breadcrumbs make the meatballs noticeably more tender. If using dried, add an extra tablespoon or two of milk to the mixture.
Can I use ground turkey instead of beef?
Yes. Ground turkey or chicken works well, but it’s leaner, so add an extra tablespoon of Parmesan and a drizzle of olive oil to keep the meatballs moist.
Why did my meatballs fall apart?
They were either overmixed, underbound, or the sauce was boiling too vigorously. Mix gently, use the full amount of breadcrumbs and egg, and simmer them gently rather than boiling.
Can I make this in a slow cooker?
Yes. Combine the sauce ingredients in a slow cooker and cook on LOW for 6–8 hours. Add the raw meatballs during the last hour of cooking.
Can I make the meatballs ahead of time?
Yes. Shape the meatballs up to 24 hours in advance and store them covered in the refrigerator. You can also make the entire sauce and meatballs up to 3 days ahead.
How do I know when the meatballs are done?
Use an instant-read thermometer. The meatballs should reach 160°F (71°C) in the center. This is the most reliable way to check for doneness.
Can I use crushed tomatoes instead of whole?
Yes. Crushed tomatoes work well and save you the step of crushing them. The sauce will be slightly smoother.
Can I freeze this sauce and meatballs?
Yes, for up to 3 months. Cool completely, transfer to freezer-safe containers, and freeze. Thaw overnight in the refrigerator, then reheat gently on the stovetop.
Can I make this gluten-free?
Yes. Use gluten-free breadcrumbs in the meatballs and serve over gluten-free pasta.
Can I make this dairy-free?
Yes. Skip the Parmesan in the meatballs and use a dairy-free Parmesan alternative on top.
How long does this last in the refrigerator?
Up to 4 days in an airtight container. The flavor will continue to develop.
Can I double this recipe?
Yes. Use a larger saucepan and adjust the seasonings to taste. The sauce and meatballs freeze well if you want to make extra.
Final Thoughts
This
Italian Spaghetti Sauce with Meatballs is everything a comforting family dinner should be: rich, savory, and packed with tender meatballs simmered in a homemade tomato sauce that tastes like it came from a neighborhood Italian restaurant.
The sauce is slow-simmered for over an hour, developing a deep, layered flavor that no jarred sauce can match. The meatballs are tender, juicy, and infused with all that tomato goodness. Serve it over spaghetti with extra Parmesan, and dinner is done.
If you make this recipe, I’d love to hear how it turned out. Did you use a mix of ground meats? Add red wine? Try it in a slow cooker? Drop a comment below and let me know — and if you’re planning to make it, save this recipe for your next cozy Italian dinner night.