These tender, juicy meatballs are browned to perfection then gently simmered in a luscious creamy tomato and basil sauce. Ground beef is mixed with breadcrumbs, Parmesan, and fresh basil, shaped into bite-sized portions, and seared until golden.
The sauce comes together in the same skillet — sautéed onions and garlic, crushed tomatoes, a splash of heavy cream, and generous handfuls of fresh basil create a rich, comforting coating that clings to every meatball.
Serve over al dente pasta, fluffy rice, or with crusty bread to soak up every last bit of that velvety sauce. A satisfying Italian-American dinner the whole family will love.
The smell of garlic hitting olive oil on a Sunday evening is my personal version of church, and these creamy tomato basil meatballs are the reason why. I stumbled onto this combination during a rain soaked autumn weekend when the fridge held nothing but ground beef, a half used can of crushed tomatoes, and some heavy cream left over from a dessert attempt. What came out of that desperate kitchen moment was a dish so absurdly comforting that it has since become the thing friends specifically request when they come over. It is the kind of meal that turns a regular weeknight into something worth remembering.
My neighbor David walked in once while I was simmering these, took one look at the pan, and literally pulled up a chair at my kitchen counter with a fork before I even plated anything. I learned that day that meatball recipes do not need to be fancy to make people lose their manners.
Ingredients
- Ground beef (500 g, or beef and pork mix): A straight beef meatball works beautifully, but mixing in pork adds a tenderness that pure beef cannot quite match.
- Breadcrumbs (1/2 cup): These are the backbone of the texture and I have learned the hard way that skipping them turns meatballs into dense little hockey pucks.
- Grated Parmesan cheese (1/4 cup, plus 1/4 cup for sauce): Use the real stuff from a block if you can, because the pre grated kind in cans simply will not melt the same way.
- Egg (1 large): One egg is all you need to bind everything together without making the mixture wet.
- Garlic (2 cloves for meatballs, 3 for sauce, minced): I always add one extra clove to the sauce because garlic mellows as it simmers and I like the warmth it leaves behind.
- Milk (1/4 cup): Soaking the breadcrumbs in milk keeps the meatballs incredibly soft inside.
- Salt and black pepper (1/2 tsp and 1/4 tsp for meatballs, plus 1/2 tsp and 1/4 tsp for sauce): Season both the meat and the sauce, because underseasoned meatballs are the fastest path to disappointment.
- Fresh basil (2 tbsp for meatballs, 1/3 cup for sauce, plus extra leaves for garnish): Fresh basil is nonnegotiable here, as it is the flavor that makes the whole dish sing.
- Olive oil (2 tbsp): A good glug in the skillet for browning the meatballs gets the whole dish off to a rich start.
- Small onion (1, finely chopped): The quiet foundation of your sauce, melting down into sweetness as it cooks.
- Crushed tomatoes (1 can, 400 g): A single can of good quality crushed tomatoes is all you need for a sauce that tastes like it simmered all afternoon.
- Heavy cream (1/2 cup): This transforms a basic tomato sauce into something velvety and indulgent.
- Chicken or vegetable broth (1/2 cup): Rounds out the sauce and gives it enough liquid to gently poach the meatballs to completion.
- Sugar (1 tsp, optional): A small pinch tames the acidity of canned tomatoes and I almost always add it.
- Cooked pasta, rice, or crusty bread (for serving): Pick whatever carb you love most, because everything here is built to be soaked up.
Instructions
- Bring the meatball mixture together:
- In a large bowl, gently combine the ground meat, breadcrumbs, Parmesan, egg, garlic, milk, salt, pepper, and basil using your hands. Stop mixing the moment everything looks evenly distributed, because overworked meat dough turns tough and unkind.
- Shape them with care:
- Roll the mixture into golf ball sized rounds, which should give you about 16 meatballs. Wet your hands lightly between every few rolls to keep the surface smooth and prevent sticking.
- Brown the meatballs:
- Heat olive oil in a large skillet over medium heat and add the meatballs, turning them frequently until golden on all sides, roughly 6 minutes. They do not need to be fully cooked through yet, so remove them to a plate and let the skillet do its next job.
- Build the sauce base:
- In the same skillet with all those beautiful browned bits, sauté the chopped onion until softened and translucent, about 3 to 4 minutes. Add the garlic and stir for 30 seconds until you can smell it bloom.
- Simmer the tomato broth:
- Pour in the crushed tomatoes and broth, stirring in the salt, pepper, and sugar if you are using it. Let it bubble gently for 5 minutes so the flavors start to marry.
- Add the cream and cheese:
- Stir the heavy cream and Parmesan into the sauce along with the chopped basil, watching it turn the most gorgeous shade of blush pink. Nestle the browned meatballs back into the skillet so they are half submerged in that beautiful liquid.
- Let everything simmer together:
- Cook uncovered on low heat for 15 to 20 minutes, gently turning the meatballs once or twice so they cook evenly and soak up the sauce from every angle. The sauce will thicken and the meatballs will be tender all the way through.
- Finish and serve:
- Taste the sauce and add more salt or pepper if it needs it, then scatter extra fresh basil leaves over the top. Serve over pasta, rice, or with a hunk of crusty bread for sweeping up every last bit of sauce.
I made a double batch of these for a friend who had just come home from the hospital, and she called me three days later to say she had been eating them cold straight from the fridge at midnight. That phone call told me everything I needed to know about this recipe.
What to Serve Alongside
A simple arugula salad with lemon juice and olive oil cuts through the richness of the cream sauce perfectly. If you are pouring wine, a Chianti or any medium bodied red pairs beautifully without competing with the basil and tomato.
Making It Your Own
Ground turkey or chicken works well if you want something lighter, though I recommend adding an extra drizzle of olive oil to the meatball mixture since leaner meats dry out faster. A pinch of chili flakes in the sauce gives it a gentle warmth that builds with every bite.
Storage and Reheating
These meatballs keep beautifully in the fridge for up to three days and the sauce actually tastes better the next day when the flavors have had time to settle. Reheat gently on the stove over low heat rather than using a microwave, which can toughen the meatballs.
- Store leftovers in an airtight container with the sauce covering the meatballs completely.
- Freeze portions in freezer safe bags for up to two months for an effortless future dinner.
- Always taste the sauce after reheating, because cold dulls salt and you might need a small pinch to bring it back to life.
Some recipes are just dinner, but this one is the kind of dish that makes people linger at the table a little longer and reach for bread to sweep their plates clean. Keep it close, because you will come back to it more times than you expect.
Recipe Questions & Answers
- → Can I use ground turkey or chicken instead of beef?
-
Yes, ground turkey or chicken works well as a leaner alternative. Keep in mind the meatballs may be slightly less juicy, so avoid overmixing and consider adding a drizzle of olive oil to the mixture for moisture.
- → How do I prevent meatballs from falling apart?
-
Don't skip the breadcrumbs and egg — they act as binders. Mix gently until just combined, as overmixing makes them dense and prone to crumbling. Chilling the shaped meatballs for 15 minutes before browning also helps them hold together.
- → Can I make this dairy-free?
-
Absolutely. Substitute the heavy cream with full-fat coconut milk, use a dairy-free Parmesan alternative, and replace regular breadcrumbs with gluten-free ones. The sauce will still be rich and flavorful with a slightly different flavor profile.
- → What's the best way to reheat leftovers?
-
Gently warm them in a covered skillet over low heat with a splash of broth or water to loosen the sauce. Avoid microwaving on high, as it can toughen the meatballs. They also reheat well in a 325°F oven for about 15 minutes.
- → Can I freeze the meatballs and sauce together?
-
Yes, let everything cool completely, then transfer to an airtight container or freezer bag. They freeze beautifully for up to 3 months. Thaw overnight in the refrigerator and reheat gently on the stovetop.
- → What pasta pairs best with this dish?
-
Long pasta like spaghetti, fettuccine, or pappardelle works wonderfully, as the creamy sauce clings to the strands. Short shapes like penne or rigatoni are also great — their ridges and tubes catch the thick, velvety sauce perfectly.