These classic Italian meatballs are incredibly tender and juicy, made with a blend of ground beef and pork, garlic, Parmesan, and fresh herbs. Simmered low and slow in a rich tomato sauce until they're practically falling apart, this is the authentic, nonna-approved recipe you've been searching for.
Large deep skillet or Dutch oven For browning and simmering
Cookie scoop or meatball scoop For uniform sizing (optional)
Rimmed baking sheet For resting the formed meatballs
Wooden spoon or silicone spatula
Tongs For turning meatballs while browning
Fine grater or microplane For the Parmesan
Measuring cups and spoons
Cutting board and sharp knife
Ingredients
For the Meatballs
1lbground beef450g, 80/20 fat ratio
1/2lbground pork225g
1/2cupItalian breadcrumbs
1/4cupwhole milk
1large egg
1/2cupfreshly grated Parmigiano-Reggianoplus more for serving
3clovesgarlicminced
1/4cupfresh flat-leaf parsleyfinely chopped
1tspsalt
1/2tspblack pepper
1/4tspdried oregano
1/8tspground nutmeg
2tbspextra virgin olive oilfor frying
For the Tomato Sauce
2tbspextra virgin olive oil
4clovesgarlicthinly sliced
1/4tspred pepper flakesoptional
56ozwhole San Marzano tomatoestwo 28oz/794g cans, crushed by hand
1tspsalt
1/2tspblack pepper
1tspsugaroptional, to balance acidity
small bunch of fresh basil leaves
Instructions
Make the panade: Combine breadcrumbs and milk in a large bowl, mash into a paste, and let sit for 5 minutes.
Build the meatball mixture: Add beef, pork, egg, Parmesan, garlic, parsley, salt, pepper, oregano, and nutmeg to the panade. Mix gently with your hands until just combined.
Form the meatballs: Using damp hands, roll the mixture into 24 golf ball-sized meatballs (1.5 to 2 inches). Place on a baking sheet.
Brown the meatballs: Heat olive oil in a large Dutch oven over medium-high heat. Brown meatballs in batches for 2-3 minutes per side until golden brown. Transfer to a plate.
Make the tomato sauce: Reduce heat to medium-low. Add olive oil, sliced garlic, and red pepper flakes. Cook for 1-2 minutes until fragrant. Add crushed tomatoes, salt, pepper, and sugar, scraping up brown bits. Bring to a gentle simmer.
Simmer the meatballs: Nestle all browned meatballs into the simmering sauce. Reduce heat to low, cover with lid slightly ajar, and cook for 25-30 minutes, turning once halfway through.
Finish and serve: Tear fresh basil leaves over the top, stir gently, and let rest for 5 minutes before serving with spaghetti, on hoagie rolls, or as desired.
Notes
Panade is crucial: The milk-soaked breadcrumb mixture is the secret to ultra-tender meatballs. Do not skip this step.
Don't overmix: Mix the ingredients just until combined. Overworking the meat will result in dense, tough meatballs.
Brown in batches: Crowding the pan will steam the meatballs instead of browning them. Work in a single layer for the best crust.
Use 80/20 ground beef: The fat content is essential for moist, flavorful meatballs. Lean beef will yield dry results.
Fresh Parmesan is best: Pre-shredded or powdered Parmesan won't melt or incorporate as well. Grate it fresh from a block.
Simmer low and slow: A vigorous boil will cause the meatballs to break apart. Maintain a gentle, barely-there simmer.
Make ahead: Formed, unbrowned meatballs can be refrigerated for up to 24 hours. Cooked meatballs in sauce can be refrigerated for up to 4 days.
Freezing instructions: Freeze cooked meatballs with sauce in an airtight container for up to 3 months. Thaw overnight in the refrigerator before reheating gently on the stovetop.
For a lighter version: Substitute ground turkey or chicken for the beef and pork, adding an extra tablespoon of olive oil to the mixture to compensate for lower fat.
To bake instead of pan-fry: Arrange meatballs on a greased wire rack over a baking sheet and bake at 400°F (200°C) for 18-22 minutes until browned and cooked through.