Quick Recipe Version (TL;DR)
Quick Ingredients
- 1 lb (454 g) ground beef (80/20)
- 1/2 lb (227 g) ground pork
- 1/2 cup (50 g) panko breadcrumbs
- 1/4 cup (60 ml) whole milk
- 1 large egg
- 1/3 cup (30 g) finely grated Parmesan, plus more to finish
- 2 tbsp chopped fresh parsley, plus more to finish
- 2 cloves garlic, grated (meatballs)
- 2 tbsp olive oil (for browning)
- 1 small yellow onion, diced
- 4 cloves garlic, thinly sliced (sauce)
- 2 tbsp tomato paste
- 1/2 cup (120 ml) dry red wine (or broth)
- 1 can (28 oz / 794 g) crushed tomatoes
- 1/2 cup (120 ml) low-sodium broth
- 1 bay leaf, 1 tsp dried basil, kosher salt, black pepper
- 4 cups (960 ml) water + 1 cup (240 ml) whole milk (polenta)
- 1 cup (170 g) medium-grind polenta
- 2 tbsp unsalted butter
- 1/2 cup (50 g) grated Parmesan (polenta)
Do This
- 1) Soak panko in milk, then mix with meats, egg, Parmesan, garlic, parsley, salt, and pepper; form 16 meatballs.
- 2) Brown meatballs in olive oil (8–10 minutes total); transfer to a plate.
- 3) Sauté onion and garlic; stir in tomato paste, then deglaze with wine.
- 4) Add crushed tomatoes, broth, basil, bay leaf; return meatballs and gently simmer 25–30 minutes.
- 5) Meanwhile, whisk polenta into simmering water/milk; cook 30–35 minutes, stirring often.
- 6) Finish polenta with butter and Parmesan; season to taste.
- 7) Spoon polenta into bowls, top with meatballs and sauce, and finish with Parmesan and herbs.
Why You’ll Love This Recipe
- Big comfort, simple method: Brown, simmer, stir polenta—no fancy techniques.
- Juicy, tender meatballs: A milk-and-panko panade keeps them moist while they braise in sauce.
- Rustic tomato flavor: Tomato paste + wine builds a deep, slow-simmered taste in under an hour.
- Creamy polenta payoff: A soft, buttery base that soaks up every bit of sauce.
Grocery List
- Produce: 1 small yellow onion, 6 garlic cloves, fresh parsley (and/or basil)
- Dairy: whole milk, Parmesan cheese, unsalted butter
- Meat: ground beef (80/20), ground pork
- Pantry: panko breadcrumbs, olive oil, tomato paste, crushed tomatoes (28 oz / 794 g), low-sodium broth, polenta (medium-grind), dry red wine (optional), dried basil, bay leaf, kosher salt, black pepper, red pepper flakes (optional)
Full Ingredients
Meatballs
- 1 lb (454 g) ground beef (80/20 recommended)
- 1/2 lb (227 g) ground pork
- 1/2 cup (50 g) panko breadcrumbs
- 1/4 cup (60 ml) whole milk
- 1 large egg
- 1/3 cup (30 g) finely grated Parmesan cheese
- 2 tbsp finely chopped fresh parsley
- 2 cloves garlic, finely grated (or minced)
- 1 tsp kosher salt
- 1/2 tsp freshly ground black pepper
- 1/2 tsp dried oregano (optional)
- 1/8 tsp crushed red pepper flakes (optional)
For Browning
- 2 tbsp olive oil
Tomato-Braised Sauce
- 1 tbsp olive oil (only if the pan looks dry after browning)
- 1 small yellow onion, diced (about 1 cup / 150 g)
- 4 cloves garlic, thinly sliced
- 2 tbsp tomato paste
- 1/2 cup (120 ml) dry red wine (or 1/2 cup / 120 ml broth)
- 1 can (28 oz / 794 g) crushed tomatoes
- 1/2 cup (120 ml) low-sodium chicken or beef broth
- 1 tsp dried basil (or 1 tbsp chopped fresh basil)
- 1 bay leaf
- 1 tsp kosher salt, plus more to taste
- 1/4 tsp freshly ground black pepper, plus more to taste
- 1 tsp granulated sugar (optional, to balance acidity)
Creamy Parmesan Polenta
- 4 cups (960 ml) water
- 1 cup (240 ml) whole milk
- 1 tsp kosher salt
- 1 cup (170 g) medium-grind polenta
- 2 tbsp unsalted butter
- 1/2 cup (50 g) grated Parmesan cheese
- 1/4 tsp freshly ground black pepper
To Finish
- Parmesan shavings or extra grated Parmesan, to taste
- 1–2 tbsp chopped fresh parsley and/or basil
- 1–2 tsp olive oil (optional drizzle)

Step-by-Step Instructions
Step 1: Make the breadcrumb-milk panade
In a large bowl, stir together the panko breadcrumbs and whole milk. Let it sit for 5 minutes so the breadcrumbs fully hydrate. This small step helps keep the meatballs tender and juicy (especially after simmering in sauce).
Step 2: Mix and shape the meatballs
To the soaked breadcrumbs, add the ground beef, ground pork, egg, Parmesan, parsley, grated garlic, kosher salt, black pepper, and (if using) oregano and red pepper flakes. Mix gently with your hands just until everything is evenly combined—avoid overmixing, which can make meatballs tough.
With slightly damp hands, shape into 16 meatballs (about 1 1/2 inches / 4 cm wide each). Place them on a plate or sheet pan.
Step 3: Brown the meatballs
Heat 2 tbsp olive oil in a large, deep skillet or Dutch oven over medium-high heat until shimmering. Add the meatballs (work in two batches if needed so they aren’t crowded). Brown on all sides, turning carefully, until nicely golden, about 8–10 minutes total. They do not need to be cooked through yet.
Transfer the browned meatballs to a plate. Reduce the heat to medium.
Step 4: Build a deep, rustic tomato sauce
If the pan looks dry, add 1 tbsp olive oil. Add the diced onion and cook, stirring, until softened, about 4–5 minutes. Add the sliced garlic and cook until fragrant, about 30–60 seconds (don’t let it brown).
Stir in the tomato paste and cook for 1 minute to caramelize it slightly. Pour in the red wine and scrape up any browned bits from the bottom of the pan. Simmer for 2 minutes to reduce slightly.
Step 5: Braise the meatballs in the tomato sauce
Add the crushed tomatoes, broth, dried basil, bay leaf, 1 tsp kosher salt, 1/4 tsp black pepper, and (if using) sugar. Bring the sauce to a gentle simmer.
Nestle the meatballs back into the sauce along with any juices from the plate. Cover partially (leave the lid slightly ajar) and simmer on low to medium-low heat for 25–30 minutes, turning the meatballs once halfway through if you’d like. Keep the simmer gentle—small bubbles, not a hard boil.
The meatballs are done when they reach an internal temperature of 165°F (74°C) and feel tender when pressed. Taste the sauce and adjust salt and pepper.
Step 6: Cook the polenta until creamy
While the meatballs simmer, combine the water, milk, and salt in a medium saucepan. Bring to a simmer over medium heat. Slowly whisk in the polenta in a thin stream while whisking constantly (this prevents lumps).
Reduce heat to low so the polenta bubbles gently. Cook, stirring often (and more frequently toward the end), until thick and creamy, about 30–35 minutes. If it gets too thick before it’s tender, whisk in a splash of hot water, 2–4 tbsp (30–60 ml) at a time.
Step 7: Finish the polenta and serve
Turn off the heat under the polenta. Stir in the butter, grated Parmesan, and black pepper until glossy and smooth. Taste and add more salt if needed.
To serve, spoon polenta into warm bowls. Top each with 4 meatballs and plenty of tomato sauce. Finish with extra Parmesan and chopped parsley and/or basil. If you like, add a small drizzle of olive oil right before serving.
Pro Tips
- Don’t overmix the meat: Mix just until combined for tender meatballs.
- Brown = flavor: Take the extra few minutes to get good color on the meatballs; those browned bits enrich the sauce.
- Keep the simmer gentle: A hard boil can make meatballs tough and can reduce the sauce too quickly.
- Whisk polenta in slowly: A steady whisk while sprinkling in the polenta prevents lumps.
- Adjust polenta texture at the end: For extra creamy polenta, stir in an additional 2–6 tbsp (30–90 ml) hot water or milk right before serving.
Variations
- Spicy arrabbiata style: Add 1/2 tsp crushed red pepper flakes to the onion/garlic step and finish with chopped basil.
- All-beef meatballs: Replace the pork with an additional 1/2 lb (227 g) ground beef. (They’ll be slightly leaner; avoid overcooking.)
- Herby Italian upgrade: Add 1 tsp fennel seeds (crushed) to the meatball mix and finish with lemon zest over the top for brightness.
Storage & Make-Ahead
Refrigerate: Store meatballs and sauce together in an airtight container for up to 4 days. Store polenta separately for up to 4 days (it will firm up).
Reheat: Warm meatballs and sauce covered on the stovetop over medium-low until hot, about 10–15 minutes, adding a splash of broth or water if needed. Reheat polenta with 3–6 tbsp (45–90 ml) water or milk per serving, stirring over low heat until creamy again.
Freeze: Meatballs and sauce freeze well for up to 3 months. Thaw overnight in the fridge and reheat gently. (Polenta can be frozen, but the texture can be grainier; it’s best made fresh.)
Make-ahead: You can form the meatballs up to 24 hours ahead and refrigerate covered. Or cook the full meatballs-and-sauce up to 2 days ahead; the flavor gets even better.
Nutrition (per serving)
Approximate, based on 4 servings: 890 calories, 48 g protein, 70 g carbohydrates, 48 g fat, 16 g saturated fat, 7 g fiber, 1,250 mg sodium.
