These meatballs combine equal parts lean ground beef, pork, and veal with a tablespoon and a half of pesto mixed straight into the meat — not spooned over the top. The three-meat blend gives you a texture and depth that straight beef alone doesn’t deliver, and the pesto does double duty as both seasoning and a moisture buffer. Pan-fry them first, then let them finish in tomato sauce — anywhere from one hour to six depending on how much time you have.
Why this recipe works
Two things make this recipe reliable. First, the onion gets puréed rather than chopped — no crunchy raw bits in the finished meatball, and the moisture distributes evenly through the mix. Second, pan-frying each batch until nearly crisp before the sauce stage locks in the shape and builds a browned exterior that holds up during a long simmer. Skip that browning step and you get soft, pale meatballs that fall apart in the pot. The pesto also pulls weight here: the oil in it coats the meat proteins and slows moisture loss, so even after an hour in sauce the centers stay tender rather than rubbery.
What can go wrong
- Meatballs falling apart in the sauce: This usually means the mixture wasn’t combined thoroughly enough, or the meatballs went into the sauce before the exterior was fully browned. Make sure the pan-fried crust is genuinely firm before transferring — skip the garnish on the plate, not the browning time in the pan.
- Greasy, heavy texture: Ground pork and veal both carry more fat than lean beef. If your butcher’s grind looks visibly fatty, pat the browned meatballs with a fresh paper towel before they go into the sauce rather than just resting them once.
- Meatballs sticking together in the sauce: If you add them all at once to a small pot, they press against each other and fuse. Use a wide, deep pot and space them in a single layer before lowering the heat.
- Bland flavor despite the pesto: Pesto intensity varies a lot by brand. Taste your pesto straight from the jar — if it’s mild, bump the quantity to 2 tablespoons and add an extra pinch of salt to the raw mix before rolling.
- Uneven browning: Crowding the skillet drops the pan temperature and the meatballs steam instead of sear. Four at a time is the right batch size for a standard 12-inch skillet — resist the urge to add a fifth.
Keeping and reheating
Cooked meatballs in sauce keep in the fridge for up to 4 days in a sealed container. For longer storage, freeze them in the sauce in a zip-lock bag or freezer-safe container for up to 3 months — the sauce protects the texture during freezing. Reheat from fridge in a covered saucepan over low heat for about 15 minutes, stirring occasionally; from frozen, thaw overnight in the fridge first, then reheat the same way. Microwaving works in a pinch but tends to tighten the meat — if you go that route, add a splash of water or extra sauce and cover the dish to trap steam. Ground pork must reach an internal temperature of 160°F (71°C) on reheat, so use an instant-read thermometer if you’re unsure.

The Best Pork, Veal, and Beef Pesto Meatballs
Ingredients
½ pound ground beef (minced beef) - lean
½ pound ground pork (minced pork) - lean
½ pound ground veal (minced veal) - lean
1 large egg
1 large egg white
⅓ cup breadcrumbs - plain Italian breadcrumbs
¼ cup yellow onion
¼ cup Mozzarella cheese
1½ tablespoon pesto
1 ¼ teaspoon Sea salt - to season
1 ½ teaspoon black peppercorns - coarse, to season
1 tablespoon basil - to season
1 tablespoon parsley - to season
4 tablespoons olive oil - extra virgin, to fry, add more if you prefer
48 ounce Neapolitan Sauce or Pasta sauce Southern Hemisphere (Tomato Sauce in North America) - for serving
Instructions
- In a food processor or blender, mince yellow onion until puréed. With a cheese grater, grate fresh Mozzarella into fine shreds. Set both aside.
- In a large bowl, combine meats, egg, egg white, breadcrumbs, onion, cheese, pesto and seasonings. With wet hands, weave together ingredients until well mixed. Keeping hands damp, roll the mixture into 15 meatballs (about the size of two golf balls).
- In a large skillet, heat several tablespoons of extra virgin olive oil over a medium-high flame. Making four at a time, cook meatballs until well browned on all sides, almost to the point of crisp (you will need 10 minutes per batch). When finished, rest on a paper-towel-lined plate to cool.
- When all meatballs are cooked in a large pot, heat tomato sauce to a low boil. Add meatballs to the sauce and lower flame, allowing the combination to simmer for 1 – 6 hours. When ready, plate and serve over pasta or with a side of bread.
Notes
Nutrition
Frequently asked questions
Can I use all beef instead of the three-meat blend?
Yes, but the texture will be denser and less tender. Veal and pork both have a finer grain and higher fat content than lean beef, so an all-beef version benefits from using 80/20 ground beef rather than extra-lean to compensate.
Can I bake these instead of pan-frying?
You can bake them at 400°F (200°C) for about 20 minutes, but the exterior won’t get as firm as it does in a hot skillet. That matters if you’re simmering them in sauce for an hour or more — a baked crust is softer and more likely to break down.
How do I know the meatballs are cooked through during the frying stage?
Cut one meatball from each batch through the center — no pink should remain. The recipe card notes this, but the target internal temperature for ground pork and beef is 160°F (71°C), so an instant-read thermometer is the most reliable check.
What pasta shape works best for serving?
Wide shapes like rigatoni, pappardelle, or thick spaghetti hold up to the weight of the meatballs and catch the sauce. Thin angel hair tends to clump under large meatballs and doesn’t carry the sauce as well.
Can I make the meatball mixture ahead and refrigerate it before rolling?
Yes — mix and cover the bowl, then refrigerate for up to 24 hours before rolling and cooking. Cold meat mixture is actually easier to roll because the fat firms up slightly, which helps the balls hold their shape.
My tomato sauce is very thin after simmering — how do I fix it?
Remove the lid for the last 20–30 minutes of simmering and turn the heat up slightly so excess liquid evaporates. Alternatively, transfer the meatballs to a plate temporarily and reduce the sauce alone over medium heat until it coats a spoon.
What to cook next
- Beef Ricotta Lasagna Rolls
- Olive Beef Polpette Perfection
- Savory Pork Noodle Stir-Fry
- Creamy Beef Spinach Pasta










