These are beef meatballs browned on the stovetop, then finished in a tomato sauce built from sautéed onion, garlic, and canned tomatoes. The whole thing simmers until the sauce thickens and the meatballs are cooked through to a safe 160°F (71°C). It takes more time than a weeknight pasta, but most of that time is hands-off — and the result is a meal that reheats better than almost anything else in this category.
Why this recipe works
Two things make this recipe reliable. First, browning the meatballs in a hot pan before they go into the sauce builds a crust that holds them together during the long simmer — skip that step and they tend to fall apart or turn mushy. Second, the meatballs finish cooking inside the sauce rather than in the oven, which means they absorb the tomato liquid as they cook. The result is a meatball that stays moist all the way through, not just on the outside. Both steps are straightforward, but they’re the reason this dish works as well as it does.
If something goes sideways
- Meatballs are falling apart in the pan: The mixture is probably too wet or was overworked. Next time, chill the shaped meatballs in the fridge for 20 minutes before browning — cold fat holds the shape better. Also make sure the pan is properly hot before the meatballs go in; a lukewarm pan causes sticking and tearing.
- Sauce is watery after simmering: Remove the lid for the last 15–20 minutes and increase the heat slightly. Canned tomatoes vary a lot in water content, so some batches just need longer to reduce. Don’t add flour — it dulls the tomato flavor.
- Meatballs taste bland in the center: Ground beef needs seasoning mixed all the way through, not just on the surface. If this happens, spoon extra sauce over each portion when serving — it compensates a lot. Season more aggressively next time before shaping.
- Sauce is too acidic or sharp: Add a small pinch of sugar — about a quarter teaspoon — and stir it in. Taste again after two minutes. Skip the garnish, not worth the extra dish; focus on getting the sauce balanced instead.
- Meatballs are dense and rubbery: This comes from compressing the meat too much while mixing or rolling. Handle the mixture as little as possible. Use a light touch when shaping — the balls don’t need to be packed tight.
Make-ahead notes
This dish holds up well in the fridge for up to 4 days in a sealed container — the sauce actually thickens overnight and the flavors settle in a good way. To freeze, let everything cool completely, then portion into freezer-safe containers or bags; it keeps well for up to 3 months. Reheat from frozen in a covered saucepan over low heat, adding a splash of water if the sauce has thickened too much, and bring the meatballs back to 165°F (74°C) at the center if you’re reheating from frozen to be safe. From the fridge, a covered pan on medium-low for about 10 minutes is enough.

Creamy Meatballs Cooked in Tomato Sauce
Ingredients
Meatball Ingredients
1 pound ground beef (minced beef)
½ cup breadcrumbs
¼ cup milk
¼ cup Parmesan cheese
½ teaspoon garlic powder
¼ teaspoon oregano - dried
¼ teaspoon basil - dried
¼ teaspoon ground black pepper - cracked
1 dash salt
Sauce Ingredients
15 ounces ketchup (tomato sauce Australia and UK)
28 ounces passata or crushed tomatoes (tomato puree with seeds removed)
½ cup red wine
½ medium sweet onion - sliced
2 tablespoons olive oil
¼ teaspoon oregano - dried
¼ teaspoon basil - dried
¼ teaspoon ground black pepper - cracked
2 dashes salt
Instructions
- Add all meatball ingredients to a mixing bowl.
- Stir everything together until the ingredients are combined.
- Begin making meatballs by dividing the mixture evenly and forming balls with the mixture. You want to try to ensure that they are roughly the same size; if you need to, you can use a measuring cup — about 1/4 cup should do.
- Place meatballs on a clean plate while you begin preparing the sauce.
- Add onion and olive oil over medium heat in a large saucepan or pot.
- Sauté onion until it begins to turn translucent (about 5 minutes).
- Move onion to the sides, leaving space in the middle for the meatballs.
- Add meatballs to the pan with enough space between them, so they are not touching each other.
- Cook meatballs on one side for about 5 minutes
- Gently turn the meatballs to the other side and cook for 5 more minutes — at this point, you must be able to gently move the meatballs without them breaking apart or sticking to the bottom of the pan (you want to make sure they do not stick).
- Add sauce, crushed tomatoes, red wine, dried oregano, dried basil, salt, and pepper to the pan.
- Stir meatballs (gently so they don’t break) and sauce to combine ingredients.
- Cook the meatballs uncovered on medium heat for 15 minutes.
- Stir again before reducing heat to a simmer, covering the pan, and cooking for 1 hour and 30 minutes.
- Check back occasionally to stir (I waited an hour before checking on them, but my meatballs weren’t sticking to the bottom of the pan, and my sauce was at a good simmer — I’ve burnt sauce onto the bottom of the pan, so if this is your first time making these you might want to check back every half hour).
- Serve and enjoy!
Nutrition
Your questions, answered
How do I know when the meatballs are fully cooked?
The safest way is a meat thermometer — ground beef needs to reach 160°F (71°C) at the center. If you don’t have one, cut a meatball in half; the inside should be uniformly brown with no pink remaining.
Can I use a leaner ground beef to make this healthier?
You can, but lean beef (90% or higher) tends to produce drier, firmer meatballs because fat carries moisture. An 80/20 blend gives a noticeably better texture here; if you only have lean beef, add an extra tablespoon of olive oil to the mixture.
Do I have to brown the meatballs first, or can I just drop them straight into the sauce?
Browning first is strongly recommended — it’s what keeps them intact during the simmer. Raw meatballs added directly to sauce often break apart and the texture ends up closer to a meat sauce than distinct meatballs.
My meatballs stuck to the pan when I tried to brown them. What went wrong?
The pan wasn’t hot enough before the meatballs went in, or they were moved too soon. Let the pan heat for a full minute before adding oil, then let each meatball sit undisturbed until it releases naturally — usually 2–3 minutes per side. A meatball that’s ready to turn will lift away from the pan cleanly.
What to cook next
- Olive Beef Polpette Perfection
- Creamy Beef Spinach Pasta
- Hearty Beef Mushroom Stroganoff
- Spicy Calabrian Lamb Ragù










