Meatball Sub

Beef, pork, and veal meatballs simmered in a garlicky red sauce, stuffed into toasted rolls with melted cheese. The classic, done right.

Time: 30 min | Yield: 4 meatball subs | Difficulty: Intermediate | Serves: 4 | Published: 2026-04-23

A great meatball sub comes down to two things: tender meatballs and a sauce worth simmering them in.

The meatballs are the classic three-meat blend, beef, pork, and veal, with breadcrumbs soaked in whole milk. That soak (the panade) is what keeps them tender instead of dense. Mix gently, don't overwork them, and let the sauce finish the cooking so they stay juicy and soak up flavor at the same time.

Pile them into toasted rolls, spoon over extra sauce, blanket with cheese, and melt it all together. If you want to go full homemade, my hoagie roll recipe is the bread this sandwich deserves.

Ingredients

Meatballs

sauce

Directions

  1. In a large bowl, add your breadcrumbs and whole milk. Mix and let sit for a minute ½ cup bread crumbs, ½ cup whole milk
  2. Add all other ingredients to the bowl. for the onion, I use a hand shredder to make it really fine 1 lb 80/20 ground beef, ½ lb ground pork, ½ lb ground veal, ½ minced onion, 5 pressed garlic cloves, 1 tsp salt, 1 tsp pepper, ½ cup grated Parmigiano Reggiano, ¼ cup finely chopped parsley, 1 whipped egg
  3. Mix with your hands until well combined, but try not to over mix them or they become dense.
  4. Cover your mixture and put in the fridge for 30 minutes
  5. Now it's time to form the meatballs. I aim for a size about the palm of your hand. Should make 15-18 meatballs.
  6. Heat up your pan on medium heat with olive oil.
  7. Sear top and bottom of each meatball in batches. 2-3 minutes per side. Then set them aside. Repeat until all are seared.
  8. In the same pan add a tablespoon of olive oil.
  9. Add diced onions and sauté for 2-3 minutes.
  10. Then add chopped garlic and sauté another minute.
  11. Mix in a tablespoon of tomato paste.
  12. Add a can of crushed tomatoes. I prefer Bianco di Napoli.
  13. Mix in oregano, salt, pepper, and 4 chopped basil leaves.
  14. Turn the pan to low heat, place your meatballs in there and cover for 20-30 minutes.
    You'll know it's right: After 25-30 min, meatballs should be cooked through (165°F internal). Sauce should be visibly thicker than at start, coats the meatballs in a glossy layer. If sauce is too thin after 30 min, uncover and simmer 5 more minutes to reduce.
  15. Remove the meatballs from the pan, set aside, and optional blend the sauce for a smoother consistency.

Troubleshooting

Meatballs were tough and dense

Over-mixed the meat, or skipped the breadcrumb-and-milk panade. Mix just until combined, no more. The panade (breadcrumbs soaked in whole milk) is the tenderizing trick, don't skip it. Shred the onion fine so it melts into the mix instead of leaving chunks.

Meatballs fell apart in the sauce

Not enough binder, or the sauce was at a rolling boil. The egg and breadcrumbs hold them together, measure them. Simmer gently, small bubbles at the edge, never a hard boil. Resist stirring aggressively for the first few minutes.

Sauce tasted flat

Tomato paste wasn't cooked out, or under-seasoned. Cook the tomato paste in the oil until it darkens to brick red before the tomatoes go in, that's where the depth comes from. Then taste and salt at the end, simmered sauces almost always need more than you think.

Sub got soggy and the bread fell apart

Bread wasn't toasted first, or too much sauce ladled into the roll. Toast the cut sides before assembling. The sauce should coat the meatballs, not pool in the roll. Spoon extra sauce over the top instead of drowning the bread.

Cheese burned under the broiler

Broiler too close, or walked away. Keep the subs 4-6 inches below the element and stand at the oven. Pull when the cheese is bubbly with brown spots. It keeps cooking after you pull it.

Meatballs were raw inside

Simmer was too gentle or too short. Keep an active gentle simmer for the full time in the steps. An instant-read thermometer should hit 165°F in the center of the biggest meatball.

Notes

The three-meat blend matters. Beef brings flavor, pork brings fat, veal brings tenderness. If you can't find veal, use 1.5 lb beef + 1 lb pork and they'll still be great, just a touch firmer. And toast the rolls, always.

Nutrition (1 sub (4 meatballs + sauce + roll + cheese)): 880 calories, 48g protein, 62g carbs, 46g fat.