Turkey meatballs that stay soft, because of the milk
Soaking the breadcrumbs in milk is what stops lean turkey meatballs going dry and bouncy. Plus the browning step that oven-only versions skip.

Adjust this recipe
Ingredients
- 500 g turkey mince, 7 percent fat, not the extra lean
- 60 g fresh breadcrumbs
- 80 ml whole milk
- 40 g parmesan, finely grated
- 48 g beaten egg, roughly one medium egg across four servings
- 2 garlic cloves, crushed
- 400 g chopped tomatoes
- 4 tsp olive oil
- 280 g spaghetti, dry weight, to serve
Method
- Stir the breadcrumbs into the milk in a large bowl and leave them for five minutes, until the bread has drunk it all and collapsed into a paste. This is a panade, and it is the whole trick of the recipe. Skip it and the meatballs will be dry.
- Add the turkey, parmesan, egg and garlic to the soaked bread, with a good pinch of salt. Mix with your fingertips only until it just comes together. Working it further develops the protein into strands and gives you a bouncy, springy meatball instead of a tender one.
- Wet your hands and roll into balls of about 30 g, four per person. Wet hands stop the mix sticking, which is what makes people compress each ball harder than they need to.
- Chill for 15 minutes if you have time. Lean mince is soft and cold meatballs hold their shape when they hit the pan.
- Heat the oil in a wide pan over a medium-high heat and brown the meatballs on two or three sides. Do not try to brown them all over and do not cook them through here: you want colour, which is flavour, and about half the cooking still to do.
- Lift them out. Tip the tomatoes into the same pan, scrape the browned bits off the bottom, season, and bring to a simmer.
- Return the meatballs, cover, and simmer gently for 12 to 15 minutes until cooked through. A bare simmer, not a boil. Turkey tightens and squeezes out its moisture if the sauce is bubbling hard around it.
- Cook the spaghetti while that happens and serve the meatballs over it with the sauce spooned on top.
Turkey meatballs have two failure modes and they are opposites. Either they are dry and crumbly, or they are dense and bouncy like something from a packet.
Both come from the same place: turkey mince has almost no fat to hide behind, so every mistake shows. The fix for the first is a panade. The fix for the second is to stop mixing.
Soak the breadcrumbs in milk first
This is the step, and it takes five minutes of doing nothing.
Bread soaked in milk becomes a paste that traps liquid inside the meatball as it cooks. Without it, the water in lean mince simply leaves and the proteins tighten around the space it left. That is what dry means, mechanically.
It is why the classic Italian recipes have always had bread and milk in them, and it matters more with turkey than with beef because there is no fat doing the same job. Dry breadcrumbs stirred in at the end do not work: they take moisture out rather than holding it in.
Stop mixing when it just comes together
The second failure is one people cause by trying harder.
Mince worked with a spoon or a mixer develops its proteins into an elastic network, the same one that makes sausages springy. In a sausage that is the point. In a meatball it is the difference between tender and rubbery.
Fingertips, briefly, until it holds. Then stop, even if it looks unevenly mixed.
Buy the 7 percent, not the extra lean
The same rule as our turkey chili, for the same reason.
Extra lean turkey mince at 2 percent fat has nothing to brown with and nothing to keep the meatball moist. Seven percent is still far leaner than beef and it is the difference between a meatball you want a second of and one you finish out of politeness. The cost is about 3 g of fat a serving.
Brown them, then simmer them
Do not bake them on a tray and call it done. Browning is a chemical reaction that produces flavour compounds no amount of simmering will create, and the browned residue left in the pan becomes the base of the sauce.
Equally, do not try to cook them through in the pan. Turkey goes from cooked to tight quickly over direct heat. Get colour on two or three sides, then let a gentle simmer in the tomatoes finish the job. Covered, barely bubbling.
If the sauce is still thin when the meatballs are done, reduce it with the lid off rather than thickening it. There is nothing here that needs starch, and the ratios if you disagree are on their own page.
What the swaps do
At the base recipe, with spaghetti, this is 605 calories and 42 g of protein.
Courgette ribbons in place of the pasta take about 44 g of carbohydrate and 215 calories off, which is by far the biggest lever on the plate. You also lose about 6 g of protein, because pasta contributes more of it than people expect.
The oil swap is the one to think about. A light spray saves about 4 g of fat, and it costs you some of the browning, which is the flavour step this recipe is built around. Take the pasta swap first.
Both are estimates from typical ingredient values rather than measurements.
Freezing
Freeze them in the sauce, not separately. The sauce protects them from drying out on reheating, which is the same problem in a different form.
They keep about three months and reheat from frozen in a covered pan over a low heat. Cook the pasta fresh.