Spaghetti and Meatballs: A Cozy, Saucy Dinner

Updated November 3, 2026

Total time
1 hr 15 min
prep 30 min · cook 45 min
Serves
6
portions as written
Safe temperature (USDA)
160°F / 71°C
check the thickest piece

Jump to recipe

Spaghetti and Meatballs: A Cozy, Saucy Dinner

Spaghetti and meatballs pairs strands of pasta with tender beef-and-pork meatballs and a tomato sauce that simmers around them. This Italian-American favorite is adaptable to many family styles, and this version builds flavor with browned meatballs, Parmesan, and a simple, gently simmered sauce.

Ingredients

  • ⅓ cup (80 ml) whole milk
  • ½ cup (50 g) plain fine breadcrumbs
  • 1 lb (454 g) ground beef, preferably 85% lean
  • ½ lb (227 g) ground pork
  • 1 large egg (about 50 g without the shell)
  • ⅓ cup (30 g) finely grated Parmesan, plus more to serve
  • 2 tablespoons (8 g) chopped fresh parsley
  • 2 garlic cloves (about 6 g), finely grated or minced
  • 1 teaspoon (5 g) kosher salt, plus more for pasta water
  • ½ teaspoon (1 g) black pepper
  • 2 tablespoons (30 ml) olive oil, divided
  • 1 medium yellow onion (about 150 g), finely chopped
  • 2 tablespoons (30 g) tomato paste
  • 2 cans crushed tomatoes, 28 oz (794 g) each
  • 1 cup (240 ml) water
  • 1 teaspoon (1 g) dried oregano
  • ½ teaspoon (0.5 g) red pepper flakes, optional
  • 1 teaspoon (4 g) granulated sugar, optional, to balance especially sharp tomatoes
  • 1 lb (454 g) dried spaghetti
  • 2 tablespoons (8 g) chopped fresh basil, optional, for finishing

Instructions

  1. Put the milk and breadcrumbs in a large bowl and stir until evenly moistened. Leave them for 5 minutes to soften while you prepare the remaining meatball ingredients. This quick soak helps the breadcrumbs distribute through the meat instead of drawing moisture from it as the meatballs cook.
  2. Add the ground beef, ground pork, egg, Parmesan, parsley, garlic, salt, and black pepper to the bowl. Mix gently with your hands or a fork just until the ingredients are combined; stop as soon as no large streaks of egg or breadcrumb mixture remain. Overmixing packs the meat and can make the meatballs dense. Shape into about 18 meatballs, each roughly 1½ inches (4 cm) across, and set them on a plate.
  3. Heat 1 tablespoon (15 ml) olive oil in a large, heavy pot or deep Dutch oven over medium heat. Brown the meatballs in batches, turning them carefully so several sides develop a deep golden crust, about 8 minutes total per batch. They do not need to be cooked through yet. Transfer them to a clean plate; if the pot looks dry, add the remaining tablespoon of oil before cooking the onion.
  4. Add the chopped onion to the pot and cook, stirring often, until softened, about 4 minutes. Stir in the tomato paste and cook for 1 minute, scraping up the browned bits. Pour in the crushed tomatoes and water, then add the oregano, red pepper flakes if using, and sugar if the tomatoes taste especially tart. Stir well and bring the sauce to a gentle simmer.
  5. Return the browned meatballs and any juices on the plate to the sauce. Partially cover the pot and simmer gently for 30 minutes, stirring carefully once or twice so the meatballs stay intact. Keep the sauce bubbling softly rather than boiling hard. Check the center of a large meatball with a food thermometer: USDA FSIS lists 160°F (71°C) as the safe minimum internal temperature for ground meat. If one has not reached that temperature, continue simmering and check again.
  6. During the final 10 minutes of simmering, bring a large pot of water to a boil. Salt it generously, add the spaghetti, and cook according to the package directions until al dente, usually 9 to 11 minutes. Before draining, scoop out 1 cup (240 ml) of pasta water. Drain the spaghetti without rinsing it.
  7. Taste the sauce and adjust the salt or pepper if needed. Add the drained spaghetti to the sauce pot if it is large enough, or return the pasta to its pot and spoon in enough sauce to coat. Toss with a splash of reserved pasta water to help the sauce cling. Serve the spaghetti topped with meatballs and extra sauce, then finish with Parmesan and basil if desired.

Tips

  • Use a light hand when shaping. A loose mixture and gentle rolling help the meatballs stay tender; compacting them tightly can make them firm. If the mixture feels sticky, dampen your hands with a little water instead of adding a lot of extra breadcrumbs.
  • Brown in batches and leave space between meatballs. Crowding traps steam and makes them pale, while a good crust adds savory flavor to the sauce. If a meatball sticks at first, give it another moment; it often releases more easily once the surface has browned.
  • For a practical substitute, use all ground beef or all ground pork in the same total quantity. All beef gives a more robust flavor, while all pork makes a softer, richer meatball. Finely grated Pecorino Romano can replace Parmesan, though it tastes saltier, so taste the mixture before adding extra salt.
  • Crushed tomatoes are widely available; if you only have whole peeled tomatoes, crush them by hand or with a spoon before adding them. The sauce may be a little less uniform. Avoid turning the simmer into a hard boil, which can break the meatballs and make the sauce splatter.

Serving Suggestions

Serve in warm, shallow bowls so each portion gets pasta, a few meatballs, and plenty of sauce. A simple green salad dressed with olive oil and vinegar makes a fresh contrast, while roasted broccoli, green beans, or sautéed zucchini are easy vegetable sides. Garlic bread or crusty bread is useful for catching the sauce, but it is optional if you want the pasta to be the focus.

Set extra grated Parmesan and chopped basil on the table so everyone can finish their own serving. For an especially saucy plate, spoon some sauce over the pasta before adding the meatballs, then add another small ladleful on top. If serving children or anyone who prefers less spice, leave the red pepper flakes out of the pot and offer them at the table.

Variations

For a slightly lighter texture, replace up to half the meat with ground turkey, but cook the meatballs to 165°F (74°C), the USDA FSIS safe minimum for poultry. You can also make the recipe with ground beef alone or pork alone, following the 160°F (71°C) ground-meat temperature. A meat-free version can use prepared plant-based meatballs, but follow the package’s cooking guidance because products vary.

For a more herb-forward sauce, stir in a tablespoon of chopped parsley or basil near the end rather than simmering it for the full time. Add sliced mushrooms with the onion for an earthier sauce, or use a pinch of fennel seed for a subtle sweet, anise-like note. If you like a smoother sauce, blend the tomato sauce before returning the meatballs; let it cool briefly and blend carefully to avoid hot splashes. These are flexible home-cooking variations, not claims that there is one definitive version of the dish.

Storage and Reheating

Refrigerate leftovers within 2 hours of cooking, storing the pasta and sauce with meatballs together or in separate airtight containers. They keep for 3 to 4 days in the refrigerator. For the best pasta texture, store spaghetti separately from the sauce when you know you will have leftovers; noodles absorb sauce as they sit, though they remain perfectly usable.

Reheat a portion in a covered saucepan over medium-low heat with a splash of water, stirring gently until hot throughout. You can also microwave it in a covered, microwave-safe dish, stirring midway through heating. Reheated leftovers should reach 165°F (74°C); check the center with a food thermometer. Freeze cooled portions in airtight freezer-safe containers for up to 2 to 3 months for best quality, then thaw overnight in the refrigerator before reheating. Do not leave leftovers at room temperature for extended storage.

Frequently Asked Questions

Can I make the meatballs ahead?

Yes. Shape the meatballs up to 1 day ahead, cover them, and refrigerate until ready to brown. Keep raw meat separate from ready-to-eat foods, and do not leave the shaped meatballs at room temperature while you prepare the sauce. You can also make the full sauce and meatballs a day ahead; cool and refrigerate promptly, then reheat until the leftovers reach 165°F (74°C).

Why are my meatballs tough?

Dense meatballs usually come from mixing too vigorously, packing the mixture too firmly, or using too many dry breadcrumbs. Mix only until combined, let the breadcrumbs soften in milk, and shape gently. Simmering the browned meatballs in the sauce also helps them finish cooking without the harsh heat of a prolonged pan-fry.

Can I cook the meatballs directly in the sauce without browning?

Yes, though the flavor and texture will be different. Carefully place the raw meatballs into gently simmering sauce, leaving space between them, and cook until the centers reach 160°F (71°C) for this beef-and-pork mixture. They will be softer and will not have the browned crust that adds flavor to the sauce. Avoid stirring vigorously while they set.

How do I keep the spaghetti from sticking together?

Use a large pot of boiling water, stir the spaghetti during the first minute, and cook it until just al dente. Drain it immediately and toss it with sauce rather than letting it sit in a colander. A little reserved pasta water helps loosen the sauce and coat the noodles; rinsing the pasta removes surface starch that helps sauce adhere.

Can I use jarred tomato sauce instead of canned tomatoes?

Yes. Replace the crushed tomatoes, water, tomato paste, oregano, and optional sugar with about 5 cups (1.2 L) of plain tomato or marinara sauce. Brown the meatballs and soften the onion as directed, then add the jarred sauce and simmer the meatballs until they reach the safe temperature. Taste before adding salt because prepared sauces vary in seasoning.

Related

More recipes to cook

Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes

Spotted an error? Tell us and we will correct it (corrections policy).