Italian Meatballs in Tomato Sauce
The version cooked in Italian houses: small, bread soaked in milk instead of dry crumbs, baked and then finished in the sauce — and not a strand of spaghetti in sight.
Polpette al sugo are the meatballs Italians actually eat: about 1½ inches across, bound with bread soaked in milk rather than dry breadcrumbs, browned in the oven and then simmered fifteen minutes in a plain tomato sauce. Five of them come to 499 calories with 47 g of protein, they take an hour, and they freeze in the sauce for three months.

Order meatballs in Italy and nobody brings you spaghetti. Polpette arrive on their own plate — five or six small ones in a shallow pool of tomato sauce, with bread on the side to wipe it up. The pasta, if there was pasta, was the course before, and it had a different sauce on it. That sounds like trivia until you cook them, because a meatball that has to stand on its own plate gets built differently from one designed to sit on top of noodles: smaller, seasoned harder, and never cooked so long that it turns into a dense little rock of beef.
The other difference is the bread. Almost every American recipe reaches for dry breadcrumbs out of a can, and dry breadcrumbs are the reason so many meatballs come out springy. They bring no moisture of their own, so they absorb what the beef releases and then the whole thing tightens as it cooks. The Italian home version starts by tearing the soft crumb out of day-old bread and soaking it in milk until it collapses — a panade, if you want the French word for it. It arrives at the bowl already wet, and the starch and milk protein sit between the strands of meat and keep them from knitting into something you could bounce.
This one is baked rather than fried, which is the single change we have made to the way a grandmother in Campania would do it. Twenty meatballs in a skillet means three batches and half a cup of oil; twenty on a sheet pan means one pan, fifteen minutes, and 2 tablespoons of oil in the entire dish. You lose a little of the crust. You get an evening back.
Why this recipe works for muscle gain
47 g of protein on one plate puts this at the top of the useful range for a single feeding. The practical target for someone training is around 0.4 g of protein per kilogram of body weight per meal — 30 to 45 g for most adults — spread over three to five feedings (Schoenfeld & Aragon, 2018). Beef carries roughly 8% of its protein as leucine, the amino acid that does most of the signalling to start building, and the 1½ oz of Parmigiano adds another 14 g of protein across the batch on its own.
What actually drives the adaptation is the daily total. The meta-analysis by Morton et al. (2018) found the benefit of extra protein flattening out around 1.6 g per kg of body weight per day, with a plausible ceiling closer to 2.2. A plate like this is one of the three or four feedings that get you there — the arithmetic is worked through in how much protein to build muscle.
93% lean beef is the compromise worth making. At 80/20 the same 1½ lb would add about 170 calories a serving, nearly all of it fat, and the meatballs would shrink more in the oven. At 96/4 they go dry, because there is nothing left to baste them from inside. 93/7 lands at 24 g of fat a serving here, 8.4 g of it saturated, in a dish built on beef and hard cheese — and beef remains one of the better whole-food sources of heme iron and zinc.
The carbohydrate is deliberately left open. At 24 g a serving this is a protein anchor, not a full training plate, which is how polpette are eaten anyway: with bread, or after a first course of pasta. Three ounces of dry pasta alongside adds about 315 calories and 64 g of carbohydrate; two thick slices of bread, about 160 and 31. Build the rest of the plate to the day you have had — the rest of the muscle-gain recipes are put together the same way.
Ingredients
20 meatballs, 5 per plate
The polpette
The sauce
Instructions
- Soak the bread. Tear the crumb into small pieces in a wide bowl, pour the milk over it and leave it 10 minutes, turning it once. When it is ready it should mash to a paste against the side of the bowl with no dry spots and no free liquid in the bottom. Squash it smooth with a fork before anything else goes in — lumps of soaked bread become pale, wet pockets inside the finished meatball.
- Mix, and stop early. Add the beef, Parmigiano, egg, parsley, grated garlic, salt and pepper to the bowl. Work it with your fingers, lifting and folding rather than pressing, for no more than 30 seconds — just until you cannot see streaks of plain meat. This is the step people overdo. Ground beef develops the same springy protein network that bread dough does if you keep working it, and there is no undoing it once it is there.
- Roll twenty. Heat the oven to 425°F (220°C). Divide the mixture into twenty pieces of about 1¾ oz (47 g) each and roll each one between wet palms into a ball roughly 1½ inches across — wet hands are what stops the mixture sticking. Set them on a plain rimmed sheet pan lined with parchment, with an inch between them. Rolled loosely, not compacted: you are shaping them, not packing a snowball.

- Bake 15 minutes. Bake on the upper rack for 15 minutes, until the tops are browned and the meatballs release from the parchment without tearing. They will not be cooked through yet and should not be — the centres finish in the sauce, which is the whole reason they stay juicy. There will be a little fat and some dark drippings on the pan; leave them there for now.

- Start the sauce while they bake. In a wide, shallow pan, warm the olive oil over medium heat and cook the onion 7 to 8 minutes, until it is soft and translucent with no colour on it. Add the sliced garlic and the chili flakes and give them 1 minute — the moment the garlic smells sweet, move on, because past that it turns bitter and you will taste it for the rest of the dish.
- Simmer the tomato 10 minutes. Pour in the passata and the salt, rinse the container with a splash of water and add that too. Bring it to a simmer and cook 10 minutes uncovered, stirring now and then. It should darken slightly from bright red to a deeper brick and thicken just enough to leave a clean trail when a spoon is drawn across the bottom of the pan. Taste it now: this is the sauce, and it does not get another chance.
- Finish the meatballs in the sauce. Slide the meatballs into the sauce along with any drippings from the pan, spooning sauce over the tops so they sit half-submerged. Lower the heat until the surface barely moves and cook 15 minutes, gently rolling them once halfway. They are done at 160°F (71°C) in the middle — take the temperature of one, once, rather than cutting into three of them.

- Basil, rest, serve. Off the heat, tear the basil over the top and leave the pan alone for 5 minutes with the lid on. Serve five to a plate with the sauce spooned over, and bread on the side — the sauce that is left in the pan is half the point of the dish. If you want pasta, cook it separately and serve it first, the way it is done at home.
Tips from our kitchen
- Wet hands, loose hands. Keep a bowl of water next to the pan and dip your palms every few meatballs. Rolling dry means pressing harder to stop the mixture sticking, and pressing harder is what makes them dense.
- Grate the garlic for the mix, slice it for the sauce. A chopped clove inside a meatball stays a chopped clove and you bite into it; grated, it disappears into the meat. In the sauce, sliced garlic cooked slowly in oil is exactly what you want to find.
- Don't skip the 15 minutes in the sauce. Meatballs taken from 425°F straight to the plate are drier and taste of oven; the last stretch in liquid finishes them at a gentle temperature and lets the sauce take on some of the beef. This is the step that makes them taste cooked together rather than assembled.
- If the sauce tightens too far, a few tablespoons of hot water at any point. It should be loose enough to pool on the plate — polpette that sit in a thick paste are being served as a topping, which is not what they are.
Variations
- With ground turkey: 93% lean ground turkey swaps in one for one and lands at about 495 calories with 43 g of protein — a few grams less than beef, and worth knowing before you make the swap for that reason. Add an extra tablespoon of milk to the panade — turkey has less fat to keep it moist and wants the help.
- Pecorino instead of Parmigiano, which is what most of southern Italy actually uses: sharper, saltier, and close enough in calories that the numbers barely move. Cut the salt in the mix to ½ tsp if you make the swap.
- As a full training plate: 3 oz (85 g) of dry spaghetti a person, cooked and dressed with a ladle of the sauce, brings the meal to about 815 calories, 58 g of protein and 88 g of carbohydrate. That is a carb-loading portion — see carb loading the Italian way.
- Gluten-free: replace the bread crumb with 60 g of cooked white rice, cooled and mashed into the milk. It does the same job — starch and moisture — and the texture is indistinguishable once cooked.
- Polpette al forno, the drier northern habit: skip the sauce step entirely, bake the full 22 minutes, and eat them with lemon. About 370 calories and 44 g of protein, and they travel well in a lunchbox.
- For a lighter evening, the same protein for a hundred calories less arrives in the baked cod with chickpeas and tomatoes.
Storage & meal prep
Keep them in their sauce in a sealed container, up to 4 days in the fridge. They improve overnight: the bread inside goes on absorbing sauce and the meatballs sit in it rather than on it. Reheat covered over low heat with a splash of water — the microwave works at half power, but full power boils the sauce and squeezes the meatballs. To freeze, cool completely and freeze meatballs and sauce together in one container for up to 3 months, then thaw in the fridge overnight and reheat gently. Frozen in sauce they come back almost exactly as they went in, which is not true of meatballs frozen bare.
Nutrition per serving
| Nutrient | Amount | % DV* |
|---|---|---|
| Calories | 499 kcal | 25% |
| Total fat | 24 g | 31% |
| Saturated fat | 8.4 g | 42% |
| Carbohydrates | 24 g | 9% |
| Fiber | 3.8 g | 14% |
| Sugars | 9.8 g | — |
| Protein | 47 g | 94% |
| Sodium | 859 mg | 37% |
*Percent Daily Values are based on a 2,000-calorie diet. Values are calculated from USDA FoodData Central and manufacturer data for the ingredients as listed; they are estimates, not lab analyses. Nutrition disclaimer.
Frequently asked questions
Are Italian meatballs healthy?
Made this way, yes. A plate of five is 499 calories with 47 g of protein and 24 g of fat, because the beef is 93% lean, the whole dish uses 2 tablespoons of oil instead of a skillet full for frying, and the sauce is tomato rather than cream. The American restaurant version is usually a mix of beef and pork at 80/20, fried, and served over a plate of pasta, which is a different meal by several hundred calories.
Should I bake or fry meatballs?
Bake them, then finish them in the sauce. Frying gives a slightly better crust, but it takes three batches and roughly half a cup of oil for twenty meatballs, and most of that crust softens in the sauce anyway. Fifteen minutes at 425°F browns all twenty at once and keeps the fat in the dish to the 2 tablespoons used for the sauce.
Why are my meatballs tough?
Two reasons, usually. Dry breadcrumbs instead of bread soaked in milk — dry crumbs take moisture out of the meat rather than adding any — and overmixing, which develops the meat protein into a springy network in about the same way kneading develops gluten. Mix for 30 seconds with your fingers, stop as soon as the streaks disappear, and roll loosely.
How much protein is in meatballs?
In this recipe, 47 g per serving of five meatballs with sauce, which comes out at about 9 g each. That is enough to cover a full feeding for most people training toward muscle gain, where the practical target is roughly 0.4 g of protein per kg of body weight per meal (Schoenfeld & Aragon, 2018). Restaurant meatballs made with a beef-and-pork mix run lower, closer to 6 g apiece.
Can I make meatballs ahead of time?
Yes, at either stage. Roll them raw up to a day ahead and keep them covered on the sheet pan in the fridge, or cook the dish through and refrigerate it in the sauce for up to 4 days — it is better on the second day. Frozen in their sauce they keep 3 months and thaw without any of the dryness you get from freezing meatballs on their own.
Sources
- USDA FoodData Central — ground beef 93% lean (raw), Parmigiano Reggiano, egg, tomato purée, olive oil
- Morton, R.W. et al. (2018). A systematic review, meta-analysis and meta-regression of the effect of protein supplementation on resistance training-induced gains in muscle mass and strength in healthy adults. British Journal of Sports Medicine
- Schoenfeld, B.J. & Aragon, A.A. (2018). How much protein can the body use in a single meal for muscle-building? Implications for daily protein distribution. Journal of the International Society of Sports Nutrition
- Phillips, S.M. & Van Loon, L.J.C. (2011). Dietary protein for athletes: from requirements to optimum adaptation. Journal of Sports Sciences
- USDA Food Safety and Inspection Service — safe minimum internal temperature for ground beef, 160°F
You might also like
Italian Beef Stew with Potatoes
Spezzatino is the beef stew every Italian region cooks a version of: chuck browned hard, simmered in red wine and…
- 2 hr 50 min
- 537 kcal
- 42 g protein
Tuscan Tuna and White Bean Salad
Tuscan tuna and white bean salad (fagioli e tonno) combines canned tuna, cannellini beans, red onion, cherry tomatoes…
- 10 min
- 426 kcal
- 40 g protein
Sheet-Pan Chicken Parmesan, High-Protein
High-protein sheet-pan chicken parmesan bakes breaded chicken breasts on a wire rack so they crisp without frying…
- 40 min
- 478 kcal
- 56 g protein


