Soft, well-seasoned beef meatballs browned on the hob then finished in a deeply savoury tomato sauce. It's a proper crowd-pleaser that comes together in one pan, and works just as well over pasta as it does with crusty bread to mop up.
These beef meatballs are everything a midweek dinner should be: soft in the middle, packed with flavour and simmered in a glossy tomato sauce you’ll want to spoon over everything. The trick is a splash of milk in the mince to keep them tender, plus a gentle simmer so they cook through without toughening. One pan, minimal fuss.
Ingredients
- 500 g beef mince (1 lb 2 oz) — 12-15% fat for the best flavour
- 50 g fresh breadcrumbs — about 1 slice of bread, blitzed
- 3 tbsp whole milk
- 1 medium egg — lightly beaten
- 30 g Parmesan — finely grated, plus extra to serve
- 3 garlic cloves — crushed
- 1 tsp dried oregano
- 2 tbsp olive oil
- 1 onion — finely chopped
- 2 x 400 g tins chopped tomatoes
- 1 tbsp tomato purée
- 1 tsp caster sugar
- 1 small handful fresh basil — torn, to finish
- to taste salt and black pepper
Method
- Put the breadcrumbs and milk in a large bowl and leave for a couple of minutes to soak. Add the beef mince, egg, Parmesan, 1 crushed garlic clove, the oregano, a good pinch of salt and plenty of black pepper. Mix with your hands until just combined, but don't overwork it.
- With damp hands, roll the mixture into 20 walnut-sized meatballs. Sit them on a plate and chill for a few minutes while you start the sauce if you have time.
- Heat the olive oil in a large deep frying pan or shallow casserole over a medium-high heat. Brown the meatballs in batches, turning, for 4-5 minutes until golden all over. Lift out onto a plate; they don't need to be cooked through yet.
- Lower the heat to medium and add the onion to the same pan. Cook for 5 minutes until softened, then stir in the remaining 2 crushed garlic cloves and the tomato purée and cook for 1 minute until fragrant.
- Tip in both tins of chopped tomatoes, the sugar and a splash of water. Season, bring to a gentle simmer and let it bubble for 5 minutes to thicken slightly.
- Return the meatballs and any resting juices to the pan, nestling them into the sauce. Simmer gently, partially covered, for 12-15 minutes, turning halfway, until the meatballs are cooked through with no pink remaining and piping hot throughout.
- Taste the sauce and adjust the seasoning. Scatter with torn basil and extra Parmesan, and serve hot.
Serve it with
- Spaghetti or rigatoni
- Buttery mashed potato
- Crusty ciabatta to mop up the sauce
- A crisp green salad
- Garlic bread
Why this works
Soaking breadcrumbs in milk creates a panade that traps moisture, keeping the meatballs soft rather than dense. Browning first builds a savoury crust, while finishing them in the sauce lets those meaty juices enrich the tomato.
Common swaps
- Use a mix of beef and pork mince for a richer, more traditional flavour.
- Swap breadcrumbs for gluten-free breadcrumbs to make the dish gluten-free.
- No fresh basil? Stir a teaspoon of dried oregano into the sauce instead.
- Add a pinch of chilli flakes with the garlic for a gentle kick.
- Replace Parmesan with a vegetarian hard cheese if preferred.
Common mistakes to avoid
- Overworking the mince, which makes the meatballs tough and dense.
- Skipping the milk-soaked breadcrumbs, so they end up dry.
- Crowding the pan when browning, which steams rather than sears the meatballs.
- Boiling the sauce hard, which can toughen the meatballs; keep it at a gentle simmer.
Storage, freezing & reheating
Storage: Cool leftovers quickly and keep in an airtight container in the fridge for up to 3 days.
Freezing: Freeze the cooked meatballs and sauce together in an airtight container for up to 3 months. Defrost fully in the fridge before reheating.
Reheating: Reheat gently in a pan over a low-medium heat, adding a splash of water, until piping hot throughout.
Allergen notes: contains Milk, Gluten, Egg. Always check individual product labels.
Estimated nutrition
Per serving, estimated from typical ingredient values — not a substitute for precise dietary calculation.
| Calories | 480 kcal |
|---|---|
| Protein | 32 g |
| Carbohydrate | 20 g |
| Fat | 30 g |