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.

Pork, Veal & Beef Pesto Meatballs (Three-Meat)
Equipment
Ingredients
½ pound ground beef (minced beef) - lean, 225g (minced beef)
½ pound ground pork (minced pork) - lean, 225g (minced pork)
½ pound ground veal - lean, 225g (minced veal)
1 large egg
1 large egg white
⅓ cup breadcrumbs - plain Italian breadcrumbs, 40g
¼ cup yellow onion - roughly chopped, about 1/4 of a medium onion, 40g
¼ cup mozzarella cheese - fresh ; finely grated, 30g- 1 ½ tablespoons basil pesto - 25g
- 1 ¼ teaspoons fine sea salt - or to taste
- 1 ½ teaspoons black pepper - coarsely ground
1 tablespoon basil - fresh ; finely chopped (or 1 teaspoon dried basil)
1 tablespoon parsley - finely chopped (or 1 teaspoon dried parsley)
4 tablespoons olive oil - extra-virgin ; fresh flat-leaf ; for frying, add more as needed between batches, 60ml
48 oz Marinara sauce (tomatoes, garlic, herbs, and onions – pasta sauce in southern hemisphere for Italian seafood dish) - or tomato pasta sauce ; for serving, 1.4 litres / about 6 cups
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.1/4 cup yellow onion, 1/4 cup mozzarella cheese
- In a large bowl, combine meats, egg, egg white, breadcrumbs, onion, cheese, pesto, and seasonings. Using wet hands, gently mix all ingredients until just combined — do not overwork the mixture. Keeping hands damp, roll into 15 meatballs (about the size of two golf balls, roughly 1.5 oz / 43g each).1/2 pound ground beef (minced beef), 1/2 pound ground pork (minced pork), 1/2 pound ground veal, 1 large egg, 1 large egg white, 1/3 cup breadcrumbs, 1/4 cup yellow onion, 1/4 cup mozzarella cheese, 1 1/2 tablespoons basil pesto, 1 1/4 teaspoons fine sea salt, 1 1/2 teaspoons black pepper, 1 tablespoon basil, 1 tablespoon parsley
- In a 12-inch (30cm) skillet, heat 2 tablespoons of the olive oil over medium-high heat. Working in batches of 4, cook meatballs until well browned on all sides and nearly crisp, about 10 minutes per batch. Transfer to a paper-towel-lined plate. Add remaining oil between batches as needed, and wipe out any burnt bits before adding fresh oil.4 tablespoons olive oil
- In a large pot or Dutch oven, heat tomato sauce over medium heat until it reaches a low boil. Carefully add the browned meatballs, reduce heat to low, and simmer partially covered for at least 1 hour and up to 6 hours, stirring gently every 30 minutes. The meatballs should reach an internal temperature of 160°F / 71°C. Serve over pasta or with crusty bread.48 oz Marinara sauce (tomatoes, garlic, herbs, and onions – pasta sauce in southern hemisphere for Italian seafood dish)
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










