Ingredients
Equipment
Method
Make the meatballs
- In a large bowl, gently mix the beef, pork, breadcrumbs, milk, egg, 1/2 cup Parmesan, parsley, 1 teaspoon of the divided salt, pepper, and 2 minced garlic cloves just until combined.
- Shape the mixture into 18 meatballs about 1 1/2 inches wide.
- Heat 2 tablespoons olive oil in a 6-quart Dutch oven over medium heat.
- Brown the meatballs in batches, turning to brown all sides, 6–8 minutes per batch, then transfer them to a plate.
Make the gravy
- Pour off excess fat, leaving the browned bits in the pot.
- Add the remaining 1 tablespoon oil and the onion and cook over medium heat until softened, 6–8 minutes.
- Stir in the remaining 4 garlic cloves and the tomato paste and cook for 1 minute.
- Add the crushed tomatoes, 1 cup water, oregano, bay leaf, and 1 teaspoon of the divided salt.
- Scrape up the browned bits and bring the gravy to a gentle simmer over medium-high heat, about 5 minutes.
- Return the meatballs to the pot, reduce the heat to low, and partially cover.
- Simmer gently for 1 1/2–2 hours, stirring carefully every 20–30 minutes, until the sauce is rich and the center of a meatball reaches 160°F.
Cook and serve
- Bring the remaining 6 quarts water to a boil in an 8-quart stockpot.
- Add the remaining 1 tablespoon salt and spaghetti and cook according to package directions, usually 8–12 minutes, until al dente.
- Drain the spaghetti.
- Serve the spaghetti topped with the gravy and meatballs and the remaining 1/2 cup Parmesan.
Notes
For tender meatballs, mix just until combined and stir the gravy carefully as it simmers. Refrigerate leftovers for 3–4 days; freeze the meatballs and gravy for up to 3 months. For a gluten-free swap, use gluten-free breadcrumbs and pasta.
