This classic spaghetti and meatballs recipe is the ultimate comfort food. Juicy, golden-seared meatballs made with a flavorful blend of beef and pork are nestled in a slow-simmered tomato-basil sauce, then topped with crispy pangrattato (toasted breadcrumbs) for a satisfying crunch.

There’s something undeniably comforting about a big bowl of spaghetti and meatballs. It’s nostalgic, hearty, and full of rich, tomatoey flavor, and when made from scratch, it becomes something truly special.
This version is layered with depth thanks to a slow-simmered tomato sauce, tender, flavorful meatballs, and a crispy pangrattato (toasted breadcrumb topping) that adds a final touch of crunch and contrast. Perfect for a cozy Sunday dinner or a make-ahead weeknight meal, this spaghetti and meatballs recipe is classic Italian-American comfort at its best.
Ingredients and Notes
See the recipe card below for the complete ingredients list and instructions.
Tomato Sauce
- Olive Oil – This helps sauté the aromatics, creating a rich, caramelized effect.
- Onion and Garlic – These infuse the sauce with a sweet, savory flavor. Make sure to use whole, fresh garlic cloves, and mince them yourself. Pre-minced garlic just won’t have the same flavor.
- Seasonings – Salt and pepper enhance the rest of the ingredients. Then, I include crushed red pepper flakes for a touch of heat. Feel free to add as little or as much as you like, depending on your spice tolerance.
- Double Concentrated Tomato Paste – This is a more intense version of regular tomato paste and creates a bolder, more concentrated tomato flavor.
- Whole Peeled Tomatoes – I prefer to use whole peeled tomatoes instead of crushed tomatoes, and use what I call the Italian grandma method to crush them with my hands, creating a chunkier texture.
- Fresh Basil – Look for vibrant green leaves free from brown spots or discoloration.
- Parmesan Rind – Using the entire rind is my secret to infusing my sauce with an incredible cheesy, umami flavor.
- Sugar – Some tomatoes are more acidic than others. So, give your sauce a taste test, and add granulated sugar as needed to help balance the flavor.
Meatballs
- Italian Breadcrumbs – These act as a binder, helping the meatballs hold their shape while contributing to the savory flavor of the dish.
- Whole Milk – I use this to hydrate the breadcrumbs, making them easier to mix.
- Pecorino Romano – This is a hard, salty Italian cheese. If you can’t find Pecorino Romano, Parmesan cheese will also work.
- Eggs – These add moisture and richness and act as a binder, helping the meatballs hold their shape and preventing them from drying out.
- Fresh Basil – I like to include julienned basil in my meatballs to add a pop of fresh flavor. It also helps create a cohesive flavor profile once the meatballs are paired with the tomato sauce.
- Meat – I prefer to use a combination of ground beef and ground pork. I always look for slightly fattier meat, using 80/20 percent beef for more moisture and flavor. I find using anything leaner causes the meatballs to taste a little dry.
- Salt and Pepper – Adjust to taste.
- Olive Oil – Use this to sear the meatballs.
Pangrattato and Serving
- Spaghetti – I use boxed spaghetti, but you can also make homemade pasta if you have the time.
- Toppings – I always top my spaghetti and meatballs with Pecorino Romano and fresh basil before serving.
- Olive Oil – This toasts the breadcrumbs, creating a crispy topping.
- Panko Breadcrumbs – Toasted until golden and crisp, these create a nice, light topping that adds a bit of texture to the otherwise soft components of the dish.
How to Make Spaghetti and Meatballs
1. Make the Tomato Sauce



2. Shape and Cook the Meatballs





3. Prepare the Pangrattato Topping

4. Serve



Nick’s Tips for Success
- Simmer the sauce low and slow. I always let my tomato sauce simmer for at least an hour. Trust me. It’s worth the wait! This is the best way to meld the flavors, creating a spaghetti sauce that’s far better than anything you’ll find in the store.
- Avoid overmixing the meatballs. I highly recommend using your hands to mix the meatballs just until the ingredients are evenly distributed. The mixture should not become mushy, or your meatballs will be tough and rubbery.
- Portion the meatballs evenly. For the most accurate results, use a food scale or cookie dough scoop to create equal-sized meatballs. This allows for even cooking.
- Don’t overcook the pasta. The spaghetti will continue to cook when combined with the sauce. So, it’s crucial to cook it just under al dente, or it will overcook and become too soft.

Spaghetti and Meatballs Recipe

Equipment
- 1 Large Dutch Oven
- 1 Large Mixing Bowl
- 1 Large Stainless Steel or Cast Iron Skillet
- 1 Plate
- 1 Meat Thermometer
- 1 Medium Skillet
- 1 Large Pot
- 1 Pair of Kitchen Tongs
Ingredients
For the Tomato Sauce
- ¼ cup (54 gram) olive oil
- 2 (300 gram) medium onion, finely chopped
- 6 (30 gram) garlic clove, peeled and finely chopped
- ¼ cup (4½ ounce) double concentrated tomato paste
- pinch crushed red pepper flakes
- 2 (28 ounce) cans whole peeled tomatoes
- 1 (20 gram) small bunch basil
- Parmesan rind, optional
- kosher salt and black pepper, to taste
- sugar, if needed
For the Meatballs
- ¼ cup (30 gram) Italian breadcrumbs
- ⅓ cup (113 gram) whole milk
- ¼ cup (40 gram) Pecorino Romano or Parmesan cheese, finely grated
- 2 large egg
- 1 pound (475 gram) ground beef, 80/20
- 1 pound (475 gram) ground pork
- ¼ cup (6-12 gram) fresh basil , julienned
- kosher salt and black pepper, to taste
- ½ cup (120 gram) olive oil
For the Pangrattato
- 1 tablespoon (14 gram) olive oil
- ⅓ cup (45 gram) panko breadcrumbs
For Serving
- 1 (1 pound / 454 gram) box spaghetti
- Pecorino Romano or Parmesan cheese, freshly grated
- basil
Instructions
For the Tomato Sauce
- In a large Dutch oven over medium heat, add the olive oil and onion. Season with salt. Then, stir to combine.¼ cup olive oil
- Cook the onion until mostly translucent, four to five minutes. Add the garlic, and cook for one to two minutes, or until the edges of the garlic just begin to turn light brown. Remove half of the onion and garlic, and reserve for the meatballs.6 garlic clove
- Add the tomato paste and red pepper flakes, and stir to combine. Cook for two to three minutes, stirring frequently, or until the tomato paste turns a darker, brick red color.¼ cup double concentrated tomato paste, pinch crushed red pepper flakes
- Add the tomatoes, crushing them with your hands as you put them into the Dutch oven. Add the basil and Parmesan rind, and stir to combine.2 (28 ounce) cans whole peeled tomatoes, 1 small bunch basil, Parmesan rind
- Season with salt and pepper, and sugar, if the sauce is too acidic.kosher salt and black pepper, sugar
- Reduce the heat to low and cover. Simmer for one hour, or until the flavors have married.
- Remove from the heat, and keep covered.
For the Meatballs
- In a large mixing bowl, add the breadcrumbs, milk, Pecorino or Parmesan, cooled onion mixture, and eggs. Whisk to combine, and set aside to hydrate for ten minutes.¼ cup Italian breadcrumbs, ⅓ cup whole milk, ¼ cup Pecorino Romano or Parmesan cheese, 2 large egg
- Add the ground beef and pork, as well as the basil, salt, and pepper. Using your hands, gently mix until combined.¼ cup fresh basil, 1 pound ground beef, 1 pound ground pork, kosher salt and black pepper
- Divide the mixture into equal-sized balls, two tablespoons in size. Gently roll them between two palms and place them on a plate or sheet tray.
- Preheat a large stainless steel or cast iron skillet over medium-high heat. Add the remaining olive oil, and once shimmering, add half of the meatballs to the pan.½ cup olive oil
- Cook for four to five minutes, or until a deeply golden brown crust forms. Flip the meatballs and repeat the same process.
- Once the other side is deeply golden brown, transfer the meatballs to a plate. Repeat the process, searing all the meatballs.
- Add the meatballs to the simmering sauce, and gently fold the meatballs into the sauce. Cook for 15-20 minutes, or until the internal temperature of the meatball reaches 155°F (68°C).
- Remove from the heat and cover until ready to add the pasta.
For the Pangrattato
- In a medium skillet over medium heat, add the olive oil. Once lightly shimmering, add the breadcrumbs, and toss to combine.1 tablespoon olive oil, ⅓ cup panko breadcrumbs
- Cook for three to four minutes, stirring frequently, or until the breadcrumbs are deeply golden brown.
- Remove from the heat and set aside until ready to serve.
For Serving
- Bring a large pot of water to a boil, and add a generous amount of salt. Add the pasta, and cook one to two minutes below al dente, according to the package directions.1 (1 pound / 454 gram) box spaghetti
- Bring the meatballs back up to a simmer.
- Using tongs, transfer the pasta from the large pot to the simmering sauce. Shake the pot continuously, coating the pasta in the sauce. Cook for another two to four minutes, or until the pasta has absorbed the sauce and cooked through.
- Transfer to a large serving platter and top with Pecorino, additional basil, and pangrattato.Pecorino Romano or Parmesan cheese, basil
Video

Notes
Nutrition
Nutrition information is automatically calculated, so should only be used as an approximation.

Frequently Asked Questions
This dish is best served fresh, as the pasta can become slightly soggy the longer it sits. However, you can transfer leftovers to an airtight container and store them in the refrigerator for up to four days. Or, freeze them for up to three months.
Thaw frozen spaghetti and meatballs in the fridge overnight. Then, reheat the dish in the microwave or in a skillet over medium heat.
The meatballs are easily a 5/5. I found my mixture quite watery though, and very soft. The sauce was…. Just okay? Also very watery. I almost feel like 2x 28 oz cans of tomatoes was too much. It didn’t cook off much liquid either since it simmered with the lid on. Either way, kids ate it!
The best spaghetti and meatballs I’ve ever had thank you for the recipe.
This recipe is awesome!!!
Super good I hope nick that you will visit estonia
Wow! D.E.L.I.C.I.O.U.S.
Very good!