Spaghetti & Meatballs
intro
Juicy, tender beef meatballs simmered in rich tomato sauce, tossed with al dente spaghetti and parmesan for a beloved, comforting Italian-American classic.
Ingredients
Steps
Mix meatball base
In a large mixing bowl, combine 450g 80/20 ground beef, 60g plain dry breadcrumbs, 80ml whole milk, 1 beaten large egg, 2 minced garlic cloves, 20g grated parmesan, 1/2 teaspoon kosher salt, and 1/4 teaspoon freshly ground black pepper. Gently fold ingredients together with clean hands until just combined; do not overmix, as this creates tough, dense meatballs.
Sear the meatballs
Heat 2 tablespoons (30ml) extra-virgin olive oil in a large deep skillet over medium heat (175°C/350°F). Roll the meat mixture into 12 equal 4cm-wide balls, carefully place them in the hot oil. Sear for 2 minutes per side (8 minutes total) until golden brown on all surfaces, then transfer to a clean plate; meatballs will not be fully cooked at this stage.
Cook sauce base
Leave the rendered meat drippings in the same skillet, lower heat to medium-low (150°C/300°F). Add 100g finely diced yellow onion, sauté for 3 minutes until soft and translucent. Add the remaining 2 minced garlic cloves and 1 teaspoon dried oregano, cook for 30 seconds until fragrant, then pour in 800g crushed tomatoes, stir in 1/2 teaspoon kosher salt and 1/4 teaspoon black pepper, stir to combine, and bring to a gentle, low bubble.
Simmer meatballs in sauce
Nestle the seared meatballs back into the gently simmering tomato sauce, reduce heat to low (110°C/225°F), cover the skillet, and cook for 20 minutes, stirring gently every 5 minutes to prevent the sauce from sticking to the pan, until meatballs reach an internal temperature of 74°C/165°F. Stir in 10g torn fresh basil during the final 2 minutes of cooking.
Cook spaghetti al dente
While the meatballs simmer, bring a large stockpot of 4 liters water with 2 tablespoons kosher salt to a rolling boil over high heat. Add 400g dried spaghetti, cook for 1 minute less than the package’s recommended al dente time (approximately 9 minutes total) until firm to the bite. Reserve 120ml of starchy pasta water, then drain the spaghetti; do not rinse the pasta, as this removes the starchy coating that helps sauce cling.
Toss and serve pasta
Add the drained hot spaghetti to the skillet with sauce and meatballs, turn heat to medium-low, toss vigorously for 1 minute, adding small splashes of reserved starchy pasta water as needed to create a glossy, light sauce coating that clings to every pasta strand. Top with the remaining 30g grated parmesan, 5g torn fresh basil, and a light pinch of black pepper to serve.
Tips
2.Never rinse cooked spaghetti: the starchy outer layer on drained pasta helps the tomato sauce emulsify and stick evenly to each strand, rather than sliding off.
3.For a richer, more traditional flavor profile, swap 150g of the ground beef for ground pork to add extra fat and depth to the meatballs.

Added a little Italian sausage to half the meat mix for extra flavor and oh my GOD, chef’s kiss. If you’re a sausage fan I 100% recommend trying that swap. Next time I’ll do half beef half sausage for all of them.
Can I make the meatball mixture the night before I want to cook this? Hosting a dinner party tomorrow and want to get as much prep done tonight as possible!
I’ve been making spaghetti and meatballs for 40 years and decided to give this recipe a shot to switch things up. The addition of a little parmesan right in the meatball mix? Game changer. Never going back to my old recipe.
Pro tip: top the whole thing with a little extra parmesan and red pepper flakes if you like a tiny kick. I did that and my roommate said it was better than the Italian place down the street. Win.
Made this for my son’s soccer team pre-game pasta dinner and it was a home run. All the boys were hyped, even the coaches came back for seconds. Doubled the recipe and had barely any leftovers. Worth every minute of cook time.
Tried this for my first ever meal prep for the week! Turned out pretty good, but my meatballs fell apart a little when I was browning them. Any idea what I might have messed up? Flavor was still chef’s kiss though
This is my go-to spaghetti and meatballs recipe, but has anyone tried making it gluten free? I have celiac and would love to make this for my partner’s birthday dinner next week, but I’m worried about swapping the breadcrumbs! It’s always such a hit with my friends when I make the regular version.
SO good. Brought this to my neighborhood potluck last weekend and the whole pan was gone in 20 minutes. Multiple people asked for the recipe, obviously sent them the link!
I was a little nervous about the medium difficulty rating because I’m a super basic cook, but this was totally manageable! Cook time was right around 50 minutes like it said, no surprises. The only swap I made was using turkey instead of beef because that’s what I had in the fridge, still tasted amazing.
OMG this recipe is a total game changer! I made this for our Sunday family dinner last night and my kids (the pickiest eaters on the planet) went back for SECONDS. The meatballs were so juicy, not dry at all like every other recipe I’ve tried. Served it with garlic bread and a side salad, perfect weeknight or weekend meal! 10/10
This recipe is so straightforward, I made it while half watching football yesterday and it still turned out perfect. The sauce is so much better than jarred, I’ll never go back.
Flavor was great, but 50 minute cook time felt a little long for a weeknight meal for me. I ended up making the meatballs ahead on Sunday and freezing them, which made weeknight assembly super fast. Definitely will make again, just plan ahead!