These tender homemade meatballs are browned to perfection then gently simmered in a luscious creamy tomato basil sauce. Ground beef is mixed with breadcrumbs, Parmesan, and fresh basil, shaped into bite-sized portions, and pan-seared until golden.
The sauce comes together in the same skillet — sautéed onions and garlic, crushed tomatoes, a splash of heavy cream, and handfuls of fresh basil create a velvety coating that clings to every meatball. Serve over pasta, rice, or with crusty bread to soak up every last bit of sauce.
Ready in under an hour, this dish feeds four and works beautifully with a glass of Chianti for a cozy weeknight dinner.
The smell of garlic hitting olive oil on a Sunday evening is enough to make anyone forget the whole week ever happened. I threw these meatballs together one rainy October night when the fridge was bare except for ground beef and a lone can of crushed tomatoes. What came out of that skillet was the kind of dish that makes you close your eyes at the first bite. My roommate walked in, said nothing, grabbed a fork, and we stood over the stove finishing half the pan before it even hit a plate.
I made a double batch for a friends moving day once, figuring hungry people deserve better than pizza delivery. We sat on overturned boxes in the living room with bowls balanced on our knees, sauce on our shirts, not caring one bit. Someone asked for the recipe before they even finished chewing.
Ingredients
- Ground beef (500 g): A beef and pork mix gives you the juiciest result, but straight beef works beautifully too.
- Breadcrumbs (1/2 cup): These hold everything together and keep the meatballs tender rather than dense.
- Grated Parmesan cheese (1/4 cup, plus 1/4 cup for sauce): The salty umami backbone folded into the meat and stirred into the sauce.
- Large egg (1): Your binder, the quiet hero of every good meatball.
- Garlic (5 cloves total, minced): Two for the meatballs, three for the sauce, and zero regrets about the quantity.
- Milk (1/4 cup): Softens the breadcrumbs so they blend invisibly into the meat.
- Salt and black pepper: Season boldly, because bland meatballs are a tragedy.
- Fresh basil (2 tbsp chopped for meatballs, 1/3 cup for sauce): Dried basil in a pinch, but fresh turns this into something that tastes like summer.
- Olive oil (2 tbsp): For browning the meatballs and building the sauce foundation.
- Small onion (1, finely chopped): Sweetness and depth in the sauce base.
- Crushed tomatoes (1 can, 400 g): The soul of the sauce, so grab a decent brand.
- Heavy cream (1/2 cup): This is what turns a regular tomato sauce into something silky and addictive.
- Chicken or vegetable broth (1/2 cup): Loosens the sauce just enough to let the flavors meld.
- Sugar (1 tsp, optional): Tames the acidity of canned tomatoes if they taste sharp.
Instructions
- Bring the meatball mixture together:
- In a large bowl, combine the ground meat, breadcrumbs, Parmesan, egg, garlic, milk, salt, pepper, and basil. Use your hands and mix gently until just combined. Overworking the meat makes tough meatballs, so stop while everything still looks a little shaggy.
- Shape and brown the meatballs:
- Roll the mixture into golf ball sized portions, roughly 16 total. Heat olive oil in a large skillet over medium heat and cook the meatballs, turning frequently, until golden brown on all sides, about 6 minutes. Remove them to a plate and resist the urge to eat one plain right now.
- Build the sauce in the same skillet:
- Toss the chopped onion into the rendered fat and sauté until soft and translucent, about 3 to 4 minutes. Add the garlic and stir for 30 seconds until the kitchen smells impossibly good.
- Simmer the tomato base:
- Pour in the crushed tomatoes and broth, then stir in the salt, pepper, and sugar if using. Let it bubble gently for 5 minutes so the raw tomato taste cooks off and everything settles into each other.
- Add the cream and finish together:
- Stir in the heavy cream and Parmesan until the sauce turns a gorgeous blush color, then fold in the chopped basil. Nestle the meatballs back into the sauce and simmer uncovered on low for 15 to 20 minutes, turning them gently halfway through, until cooked through and the sauce coats the back of a spoon.
There is something deeply satisfying about lifting the lid off a skillet and seeing those meatballs tucked into bubbling, creamy tomato sauce. It transforms an ordinary weeknight into a tiny celebration.
Serving Suggestions
Spoon these over al dente spaghetti, pile them onto crusty bread for the worlds best meatball sub, or serve them alongside rice if you want to keep things simple. A glass of Chianti and a side salad turn this into a dinner worth lingering over.
Making It Your Own
Ground turkey or chicken lightens things up without losing the comfort factor. A pinch of chili flakes wakes up the sauce in a way that makes you go back for more. Coconut milk swaps in beautifully for the cream if dairy is off the table, and gluten free breadcrumbs work seamlessly too.
Storage and Reheating
Leftovers keep in the fridge for up to three days and somehow taste even better after a night of resting. Reheat gently on the stove with a splash of broth to loosen the sauce back up.
- Freeze portions in airtight containers for up to two months for emergency comfort food.
- Label the container with the date or you will play freezer roulette next month.
- Always reheat gently so the cream sauce does not break and separate.
Some recipes earn a permanent spot in your rotation, and this one earns it every single time the garlic hits the pan. Share it with someone who showed up hungry and watch them go quiet after the first bite.
Recipe Questions & Answers
- → Can I use ground turkey instead of beef for the meatballs?
-
Yes, ground turkey or chicken works well as a lighter alternative. Keep in mind the meatballs may be slightly less juicy, so avoid overmixing and consider adding an extra tablespoon of milk to keep them moist.
- → How do I prevent meatballs from falling apart while cooking?
-
Make sure your mixture includes the egg and breadcrumbs as binders, and avoid overmixing the meat. Chilling the shaped meatballs for 15 minutes before browning also helps them hold their shape in the skillet.
- → Can I make this dairy-free?
-
Absolutely. Swap the heavy cream for full-fat coconut milk, use a dairy-free Parmesan alternative, and replace the milk in the meatballs with unsweetened almond or oat milk. Gluten-free breadcrumbs can also be used if needed.
- → What pasta pairs best with this dish?
-
Spaghetti, pappardelle, or penne are all excellent choices. Broad noodles like pappardelle really catch the creamy sauce, while penne holds up well if you prefer a shorter pasta shape.
- → Can I prepare the meatballs ahead of time?
-
Yes, you can shape and refrigerate the raw meatballs up to 24 hours in advance. You can also fully cook the dish and reheat gently on the stovetop over low heat the next day — the flavors deepen overnight.
- → How do I thicken the sauce if it's too thin?
-
Let the sauce simmer uncovered for a few extra minutes to reduce and naturally thicken. Avoid adding flour or cornstarch — the cream and Parmesan should provide enough body as the liquids reduce.