Ingredients
1 lb ground beef (80/20 lean/fat ratio)
1/2 lb ground pork
1/4 lb ground veal (optional, for extra tenderness)
1 cup fresh breadcrumbs (from day-old Italian bread)
1/2 cup grated Parmesan cheese (or Pecorino Romano)
4 cloves garlic, minced
1/4 cup fresh parsley, chopped
1 tsp dried oregano
1 tsp salt
1/2 tsp black pepper
2 large eggs, lightly beaten
1/4 cup milk (whole or 2%)
2 tbsp olive oil (for searing)
1 (28 oz) can crushed tomatoes
2 tbsp tomato paste
Pinch of sugar (optional, to balance acidity)
Fresh basil leaves, for garnish
Instructions
Step 1: In a large mixing bowl, gently combine the ground beef, ground pork, and (if using) ground veal. Use your hands to lightly break up the meat, but avoid compacting it.
Step 2: Add the fresh breadcrumbs, grated Parmesan cheese, finely minced garlic, chopped fresh parsley, dried oregano, salt, and black pepper to the bowl with the meat. Ensure the seasonings are evenly distributed throughout the breadcrumbs.
Step 3: In a separate small bowl, whisk together the eggs and milk until well combined. Pour this mixture over the meat and breadcrumb mixture.
Step 4: Using your hands (or a stand mixer with a paddle attachment on low speed), gently mix all the ingredients until just combined. The mixture should be uniform but not tightly packed. Do not overmix!
Step 5: Lightly wet your hands and roll the meat mixture into 1.5-inch to 2-inch balls. Place them on a baking sheet lined with parchment paper.
Step 6: Heat the olive oil in a large, heavy-bottomed pot or Dutch oven over medium-high heat. Once hot, carefully add the meatballs in batches, being careful not to overcrowd the pan. Sear them on all sides until nicely browned, about 3-5 minutes per batch. They don't need to be cooked through at this stage, just browned for flavor and structure.
Step 7: Remove the browned meatballs from the pot and set aside. If there's excessive fat, carefully drain some, leaving about 1 tablespoon in the pot. Reduce the heat to medium.
Step 8: Add the chopped onion to the pot and sauté until softened and translucent, about 5-7 minutes. Add the crushed tomatoes, tomato paste, and a splash of water or broth if the sauce is too thick. Season the sauce with a pinch of salt, sugar (to balance acidity), and any additional herbs like basil or bay leaf.
Step 9: Carefully return the browned meatballs to the simmering sauce. Ensure they are mostly submerged. Bring the sauce to a gentle simmer, then reduce the heat to low, cover the pot, and let it cook for at least 30-40 minutes, or up to 2 hours for deeper flavor. The longer they simmer, the more tender and flavorful your meatballs will become, absorbing all the rich tomato goodness.
Step 10: Once cooked, remove the pot from the heat. Garnish with fresh basil and extra grated Parmesan cheese. Serve immediately over your favorite pasta, in a hearty sub, or simply as a comforting meal on its own!
Notes
For the best flavor, make the meatball mixture ahead of time and let it chill in the refrigerator for at least 30 minutes (or up to 4 hours). This allows the flavors to meld and the mixture to firm up, making it easier to form the meatballs. The longer these meatball recipes simmer in the sauce, the more tender and flavorful they become.
- Prep Time: 25 minutes
- Cook Time: 45 minutes
- Category: Main Dishes & Savory Recipes
- Cuisine: Italian-American
Nutrition
- Serving Size: 4 meatballs with sauce
- Calories: 480 kcal
- Sugar: 10g
- Sodium: 750mg
- Fat: 28g
- Saturated Fat: 10g
- Unsaturated Fat: 15g
- Trans Fat: 0.5g
- Carbohydrates: 28g
- Fiber: 5g
- Protein: 28g
- Cholesterol: 120mg