This spaghetti and meatballs recipe has that classic rich taste you love! It's got juicy meatballs in a flavorful tomato sauce, and everything is made from scratch in this Italian-American favorite.
Try this Easy Meat Sauce next for pasta night.
Why you'll crave it
Is there anything better than homemade spaghetti and meatballs? When you dig into a big bowl of it, it's obvious that a lot of care and love was put in. Our recipe is made completely from scratch and delivers on flavor, so it's a wonderful choice for Sunday supper with the family.
You won't mind spending a little more time in the kitchen, especially since the sauce and meatballs are freezer friendly for meals you'll look forward to eating later on. There's nothing to be intimidated by either. A lot of it is hands-off, and simmering the sauce builds the gorgeous flavors. This is a straightforward recipe you'll want to keep in your back pocket for when only a cozy dinner will do!
What you'll need and why
For the sauce
- Olive oil and butter - for sautéing
- Onion and garlic - the aromatic base. I like Vidalia (sweet) onions best.
- Tomatoes - we're using cans of whole tomatoes. I recommend San Marzano plum tomatoes from Italy. The taste just can't be matched!
- Italian seasoning and dried oregano - our seasoning blend to infuse tons of flavor. Italian seasoning is a blend with herbs like rosemary and thyme.
- Sugar - it's an old chef's trick that I wouldn't skip here. A pinch of sugar cuts down the acidity of the tomatoes to balance the sauce, and it doesn't make it sweet.
- Red pepper flakes - they're optional, but the amount listed just brings a gentle warmth and not spiciness
For the meatballs
- Breadcrumbs - we're using Italian seasoned ones
- Milk - whole milk plus breadcrumbs makes what's called a panade, which makes the meatballs stay light and tender
- Ground beef and pork - avoid using extra lean; anywhere in the 80-85% range is good for additional flavor from a bit more fat
- Egg - to bind everything together
- Minced garlic and onion powder - to add savory flavor along with salt & pepper
- Parsley - fresh parsley gives a burst of freshness
- Parmesan - for that cheesy element to take the meatballs over the top!
- While we love making this homemade tomato sauce to get back to the basics, if you're a little short on time, try my Easy Meatball Recipe with a jar of your favorite marinara sauce for a shortcut.
How to make spaghetti and meatballs
This is an overview with step-by-step photos. Full ingredients & instructions are in the recipe card below.
Prep all the ingredients beforehand. Add the tomatoes along with the liquid from the cans into a bowl, and break them up with your hands. In a soup pot, sauté the olive oil, butter, and onion, followed by the garlic.
Stir in the tomatoes, Italian seasoning, oregano, sugar, and red pepper flakes. Cover the pot, let it come to a boil, and then simmer for 30 minutes. Meanwhile, make the panade for the meatballs by mixing the milk and breadcrumbs into a paste.
Add the remaining meatball ingredients to the bowl, and delicately combine with your hands without overworking the mixture. Form into around 18 meatballs that are 1 and ½ inches, and place on a plate or parchment paper.
Gently place the meatballs in the pot so they're covered in sauce. Continue simmering until they're cooked through. Season with salt & pepper as needed, and serve with spaghetti, freshly torn basil, and grated parmesan!
- Try not to overwork the meatball mixture; this can lead to rubbery meatballs.
- The meatballs are not seared in this recipe. We tested both ways and preferred adding them directly into the sauce. Many Italian American restaurants don't sear their meatballs for their spaghetti and meatballs recipes, and they just melt in your mouth like these.
- With that said, if you feel strongly about searing them, you can do that in a skillet ahead of time prior to adding them to the sauce. You may want to coat them in flour (shake off any excess) to prevent them sticking to the skillet as they are quite moist and fairly delicate.
Substitutions and variations
- Our kitchen has tested this recipe multiple times to ensure it works as written, and tomato sauces can be tricky despite their simplicity, so I'd err on the side of following the recipe as-is (at least the first time you make it). With that said, minor tweaks like adding in more herbs or garlic are totally fine!
- For the meatballs, panko breadcrumbs may be swapped for Italian seasoned ones. If using regular unflavored breadcrumbs, I suggest adding a 1/2 teaspoon or so of dried Italian seasoning to compensate.
- I recommend using two kinds of meat for the best flavor and texture for the meatballs. Instead of ground pork, use Italian sausage meat or even ground veal if you like.
Tools for this recipe
- I find it easiest to mince garlic with a garlic press so that you don't even need to peel the cloves.
- This Staub 5.5 quart Dutch oven is the one I used for this recipe.
- I recommend testing several meatballs with an instant read meat thermometer to ensure they're at least 165F. If not, let them simmer for a bit longer.
Leftovers and storage
- If possible, I recommend boiling up fresh spaghetti vs. cooking a lot of it and mixing it all with the sauce and meatballs if you anticipate leftovers. You can definitely eat leftover cooked spaghetti, but it will soften and soak up some of the sauce. If you go that route, I recommend reheating it over a low heat and eating it within a day or two.
- The meatballs and sauce will keep for 3-4 days in the fridge in an airtight container no problem.
- Freeze meatballs and sauce together in Tupperware containers. Do individual portions or however many you think you'll be serving in a meal. Thaw in the fridge overnight, and warm on the stove slowly over a low heat. Serve with freshly boiled spaghetti.
Let me hear what you think in the comments below, or tag me on Instagram #saltandlavender with your creations.
Spaghetti and Meatballs
- 1 pound uncooked spaghetti
- 1 tablespoon olive oil
- 1 tablespoon butter
- 1 medium onion chopped
- 4 cloves garlic minced
- 2 (28 fluid once) cans whole tomatoes (with juices) see note
- 1 teaspoon Italian seasoning
- 1 teaspoon dried oregano
- 1 teaspoon granulated sugar see note
- 1/4 teaspoon crushed red pepper flakes optional (or add more, to taste)
- Salt & pepper to taste
- Fresh basil for serving optional, to taste
- 1/3 cup Italian seasoned breadcrumbs
- 1/3 cup milk I use whole milk
- 1 pound ground beef see note
- 1/2 pound ground pork or ground Italian sausage
- 1 large egg
- 4 cloves garlic minced
- 1/2 teaspoon onion powder
- 1 teaspoon salt
- Pepper to taste
- 1/4 cup fresh parsley chopped finely
- 3/4 cup freshly grated parmesan cheese + more for serving
- I recommend prepping all ingredients before getting started to make it easier. The meatballs and sauce both use minced garlic, so be sure to mince it all at once (I use a garlic press to make this go fast). Add the canned tomatoes (with juices) to a large bowl and use your hands to break the whole tomatoes up.
- To a soup pot, add the olive oil, butter, and onion and sauté over medium heat for 5 minutes.
- Stir in the garlic and cook for 30 seconds.
- Add in the tomatoes, Italian seasoning, oregano, sugar, and red pepper flakes. Give it a good stir. Once the sauce starts to bubble, cover the pot with the lid slightly open and reduce the heat and simmer for 30 minutes (adjust between medium-low and low heat as needed to maintain a constant simmer).
- While the sauce is cooking, make the meatballs. Add the breadcrumbs and milk to a fairly large prep bowl. Mix/mash together until you've got a paste.
- Add the remaining meatball ingredients to the bowl. Using your hands, mix it together and then form about 18 (1 ½-inch) meatballs. Don't over-mix or pack them too tightly, and use a delicate touch. Place the meatballs on a couple of plates or a parchment paper lined baking sheet as you go along for easy clean-up.
- Give the sauce a stir, then place the meatballs in the pot and gently arrange them so they're submerged in the sauce. Continue simmering (lid slightly open) for another 35-45 minutes or until they're cooked through (165F). You may need to increase the heat to get it going again, then reduce the heat and adjust as needed to maintain a simmer. If you have a strong preference, feel free to brown the meatballs in a skillet ahead of adding them to the sauce, but our kitchen tested both methods and the meatballs are tasty either way (and this saves time and extra dishes)!
- Give the sauce a taste and season with salt & pepper as needed (I'm generous with both). Serve with cooked spaghetti and some fresh basil (tear it up or slice it thin) and freshly grated parmesan cheese sprinkled over top. Note: Leftovers can be refrigerated/frozen, so if you don't plan on eating it all at once, I would make less than the 1 pound of spaghetti and boil fresh pasta when you're warming up leftover meatballs & sauce.
- The meatball prep time is counted within the cook time since the sauce is cooking while you're prepping the meatballs.
- I recommend using San Marzano plum tomatoes for best flavor.
- Adding a little sugar to tomato sauces is an old trick to cut down on the acidity of the tomatoes and bring out their natural sweetness. It's optional but recommended.
- Fattier ground meats equal moister and more flavorful meatballs, so avoid anything that's extra lean (80-85% lean is good).
- Nutritional information is provided as a courtesy only and should be construed as an estimate rather than a guarantee. Ingredients can vary and Salt & Lavender makes no guarantees to the accuracy of this information. It includes the spaghetti (just over 2.5 oz uncooked/person).