Italian American Spaghetti and Meatballs

Or: When your meatballs need a rack, not a lecture about fat content

Total time: 150 minutes • Active: 50 minutes • Inactive: 90 minutes

This is my big-batch, two–sheet-pan version of classic spaghetti and meatballs, built for feeding people without stress. The meatballs are intentionally rich, a mix of 75/25 beef and ground pork or veal, so the method is designed to keep them tender and flavorful without turning your sauce into an oil slick. The sauce itself is flexible and family-style, a layered tomato base with just enough natural sweetness to feel balanced, not sugary.

The key move here is separating structure from flavor. The meatballs are par-baked on racks first to set their shape and shed excess fat, then finished gently in the sauce so everything comes together without heaviness. It is a practical, forgiving approach that scales well, freezes well, and tastes like you worked harder than you actually did.

This is not a precious recipe. It is designed to be adjusted by the size of your pot, the appetite of your table, and the truth of what your sauce looks like in the moment. The guardrails are here so you can relax and cook with confidence, not second-guess every step.

Snapshot

  • Implements: large mixing bowl; wire rack plus 2 sheet pans; foil for lining pans; very large Dutch oven or stock pot (or two pots); tongs or a slotted spoon; optional instant-read thermometer
  • Oven setting: 425°F (218°C) for par-baking meatballs
  • Stove setting: medium heat for sauce aromatics, low for simmering
  • Batch size: approximately 40 meatballs (2-inch size), enough sauce to simmer the batch and serve with spaghetti (extra meatballs and sauce likely, freeze and feel victorious)

Ingredients

Part 1: The sauce (big enough to simmer everything)

Aromatics

  • 2 to 3 Tbsp olive oil
  • 2 large yellow onions, finely chopped (or grated for a smoother sauce)
  • 4 to 5 garlic cloves, smashed or finely minced (measure with your heart)
  • 1 (6 oz) can tomato paste
  • 1 to 2 whole carrots, peeled (for sweetness, removed later)
  • Salt to taste

Tomatoes (start with 6 cans, then adjust with full cans only)

Start with:

  • 2 (28 oz) cans tomato sauce
  • 2 (28 oz) cans whole San Marzano tomatoes
  • 2 (14.5 oz) cans diced tomatoes (fire roasted is great; Italian-seasoned is fine but reduce added herbs)

Optional adds you may use based on pot volume:

  • 1 to 3 additional large (28 oz) cans of tomato sauce or whole/crushed tomatoes (added only if needed for volume)

Seasoning and depth

  • 1 Parm rind (optional but highly recommended)
  • 2 to 3 bay leaves (optional, but classic)
  • Dried basil, 1 to 2 Tsp (or to taste)
  • Dried oregano, a pinch (seriously)
  • Kosher salt, added gradually
  • Sugar, ½ Tsp at a time at the end if needed (optional)

Optional umami helper (use restrained)

Choose one, only if the sauce tastes hollow after simmering:

  • Better Than Bouillon Roasted Beef, ½ to 1 Tsp max for a full pot

or

  • Knorr Rich Beef stock pot, 1 max

Optional finishing balance

  • Red wine vinegar or lemon juice, 1 Tsp at the end if it tastes heavy (optional)

Part 2: The meatballs

Meat

  • 2 lb ground beef (75/25)
  • 1 lb ground pork OR veal

Panade (choose one)

Option A (classic):

  • 1¼ cups white bread, crusts removed, torn small
  • ¾ cup whole milk (or 2%)

Option B (plush with a little extra structure):

  • ¾ cup white bread, crusts removed, torn small
  • ½ cup plain panko breadcrumbs
  • ¾ cup whole milk

Flavor and binders

  • 2 large eggs
  • ½ cup finely grated Parmigiano-Reggiano (green can is totally fine!)
  • 2 to 3 Tbsp freeze-dried parsley
  • 2 to 2½ Tsp garlic powder
  • 3 Tsp onion powder
  • 1¼ to 1½ Tsp freshly ground black pepper
  • 1 Tsp fennel seed (optional)
  • ⅛ to ¼ Tsp freshly grated nutmeg (optional)
  • 1½ Tsp kosher salt to start (adjust after test patty, likely 1½ to 2 Tsp total)

For par-baking

  • Olive oil or nonstick spray (for the rack)

Part 3: Pasta and serving

  • Spaghetti, 1.5 to 2 lb depending on crowd
  • Parmigiano-Reggiano, for serving
  • Parsley, chopped, for serving (optional)

Method

  1. Start the sauce and get it simmering

    Sweat the onions

    Heat olive oil in a large pot over medium heat. Add the onions and cook, stirring frequently, until very soft and translucent, 8 to 12 minutes. You want sweet and mellow, not browned.

    Add 1 to 2 Tsp salt here to begin building flavor.

    Add the garlic for the last 30 to 60 seconds until fragrant.

    Add tomato paste and cook until brick red

    Add the tomato paste and cook, stirring frequently, for several minutes until it deepens to brick red. This builds a deeper flavor base.

    Add your other tomatoes

    Add

    • 2 (28 oz) cans of tomato sauce
    • 2 (28 oz) cans of whole tomatoes (crush by hand as you add)
    • 2 (14.5 oz) cans of diced tomatoes

    Rinse your 2 cans of sauce with about half a can’s worth of water (you can splash back and forth to rinse) then add this sauce water to the pot.

    Add the whole peeled carrot(s), Parm rind, and bay leaves if using.

    Bring to a gentle simmer, then reduce heat to low.

    Let it simmer

    Simmer partially covered, stirring occasionally. While it simmers, make the meatballs (step 2). The sauce wants at least 30 minutes total, longer is better. 60 to 90 minutes is excellent.

  2. Make the meatballs (while the sauce simmers)

    Make the panade

    Pre-heat oven to 425°F (218°C).

    Combine bread and milk and let sit 5 minutes. Mash into a thick paste. If it’s soupy, squeeze gently. If it’s dry, add a splash more milk.

    If using the bread plus panko option, stir panko in after the bread becomes a paste.

    Mix the flavor base

    In a large bowl, mix thoroughly:

    • panade
    • eggs
    • Parm
    • freeze-dried parsley
    • garlic powder
    • onion powder
    • black pepper
    • fennel seed (if using)
    • nutmeg (if using)
    • 1½ Tsp kosher salt

    Add meat and mix

    Add the beef and pork (or veal). Mix until combined. Don’t be afraid to get your hands dirty.

    Test patty

    Cook a small patty and taste. Adjust salt, pepper, and other seasoning to your taste.

    Shape

    Roll into 2-inch meatballs. Lightly packed, not compressed.

  3. Par-bake on a rack (your grease-control step)

    Line sheet pans with foil. Place wire racks on top. Lightly oil the racks.

    Arrange meatballs with a little space between.

    Bake 12 to 15 minutes, until they are set and lightly browned but not fully cooked through. Optional nerd target: 120 to 130°F (49 to 54°C) internal.

    You will see a lot of fat on the pan. That’s correct.

  4. Check the sauce and adjust volume if needed

    Sauce texture choice:

    If you want it smoother, use an immersion blender in quick pulses. Stop before you get to a full puree.

    Make sure the sauce volume matches the batch

    This is where we keep it sane.

    Before adding meatballs, look at your pot and ask:

    “If I add all my meatballs, will they be mostly submerged without stacking too tightly?”

    • If yes: proceed.
    • If it looks tight: open one additional 28 oz can (sauce or whole) and simmer 10 minutes.
    • If it looks crowded or stacked: open two additional 28 oz cans, one at a time, simmering briefly between.

    Also: if your pot can’t comfortably hold everything, split sauce into two pots now. (And put a bigger pot on your shopping list for next time.)

  5. Finish meatballs in the simmering sauce

    Bring sauce back to a gentle simmer.

    Add meatballs in batches if needed so you don’t break them.

    Simmer gently 25 to 40 minutes, partially covered, stirring from the bottom occasionally. Avoid boiling hard.

    As they simmer:

    • the meatballs finish cooking
    • the sauce thickens
    • some fat renders into the sauce (good flavor, controlled)

    Optional: beef base

    After the meatballs have simmered 15 to 20 minutes, taste the sauce.

    Only if it tastes hollow, dissolve and add:

    • ½ Tsp BTB or ½ Knorr pot, taste, then decide if it needs more

    Stop before it becomes stew-like.

    End adjustments

    Remove carrot(s), Parm rind, bay leaves.

    Taste and add, if needed:

    • salt
    • a small pinch of sugar (½ Tsp at a time)
    • if it tastes heavy, add 1 Tsp red wine vinegar or lemon juice
  6. Cook spaghetti and combine intelligently

    Bring a large pot of salted water to a boil.

    Cook spaghetti until just shy of al dente.

    Reserve 2 cups pasta water, then drain.

    The best serving approach

    In a large pan or pot, toss pasta with a few ladles of sauce and a splash of pasta water until glossy and well-coated.

    Serve meatballs on top. Spoon extra sauce over everything.

    Finish with Parm and parsley.


Notes, swaps, and guardrails

Why this method works for 75/25 beef plus pork or veal

High-fat meat stays juicy, but can turn greasy. Par-baking on a rack renders excess fat early. Finishing in sauce prevents drying and adds cohesion.

Variation: Using Italian sausage

If you prefer to use 1 lb Italian sausage (sweet, hot, or a mix) instead of ground pork or veal:

  • Reduce salt significantly. Start with ½ to ¾ Tsp and finalize after a test patty. Sausage is already heavily seasoned and salted.
  • Garlic and fennel may be reduced or omitted entirely, depending on your sausage brand and desired flavor profile.
  • Seasoning becomes more brand-dependent. Taste your sausage first, then adjust the additional seasonings accordingly. Some sausages are already very garlicky, while others are milder.

Oregano rule

A pinch only. Too much equals pizza. You’re right.

Sauce too thick?

Add hot water or pasta water a little at a time. This is tradition, not dilution.

Sauce too thin?

Simmer uncovered longer. Tomatoes will concentrate.

Meatballs dense?

Usually overmixing or overpacking. Fold gently, roll lightly.

Meatballs falling apart?

Usually too-wet panade. Also, make sure they par-bake long enough to set before saucing.

Storage and freezer plan

  • Meatballs plus sauce keep 4 days refrigerated.
  • Freeze meatballs in sauce or separately.
  • Reheat gently by simmering, not microwaving into rubber.

Make something else