Go Back

Hearty Meatball Zoodles in Rich Tomato Sauce

A vibrant, low-carb twist on a classic comfort meal. Perfectly seasoned meatballs simmered in a rich tomato sauce and served over tender zucchini "zoodles" for a guilt-free indulgence.
Prep Time 20 minutes
Cook Time 40 minutes
Total Time 1 hour
Servings: 4
Course: Main Course
Cuisine: Italian-American Inspired
Calories: 414

Ingredients
  

Pantry
  • 2 tbsp extra virgin olive oil divided
  • ¼ cup 60 ml dry red wine, such as Cabernet Sauvignon or Merlot
  • 1 can 15 oz / 425 g crushed tomatoes
  • ¼ tsp fennel seeds lightly crushed
  • 1 tsp dried basil
  • ½ tsp red pepper flakes or to taste
  • ½ tsp smoked paprika
  • Sea salt and freshly ground black pepper to taste
Proteins & Dairy
  • ½ pound ground pork
  • pound lean ground beef 90/10
  • 1 medium egg lightly beaten
  • 3 tbsp grated Pecorino Romano cheese
  • Produce
  • 4 medium zucchini about 2 pounds / 900 g total
  • 1 small yellow onion finely diced
  • 5 cloves garlic minced and divided
  • 2 shallots minced
Garnish
  • Small handful of fresh basil leaves torn

Equipment

  • Spiralizer or Julienne Peeler
  • Heavy-Bottomed Dutch Oven or large pot
  • Large Non-Stick Skillet
  • Large mixing bowl
  • Instant-read thermometer
  • Chef's Knife & Cutting Board

Method
 

  1. Initiate the Sauce : In the Dutch oven, warm 1 tablespoon of the olive oil over medium heat. Add the diced yellow onion and a pinch of salt, cooking for 8–10 minutes until softened and translucent. Stir in half of the minced garlic and cook for another minute until fragrant. Pour in the red wine to deglaze the pot, scraping up any browned bits from the bottom.
  2. Simmer the Sauce : Allow the wine to reduce by about half. Stir in the crushed tomatoes, dried basil, smoked paprika, and red pepper flakes. Season with salt and pepper, then bring the mixture to a gentle bubble. Reduce the heat to low, cover, and let the sauce simmer while you prepare the meatballs.
  3. Forge the Meatballs : In a large mixing bowl, combine the ground pork, ground beef, minced shallots, the remaining minced garlic, the beaten egg, and the grated Pecorino Romano. Season generously with salt and pepper and add the crushed fennel seeds. Mix with your hands until just combined—do not overwork. Roll the mixture into uniform 1-inch balls.
  4. Sear for Flavor : Heat the remaining 1 tablespoon of olive oil in the large non-stick skillet over medium-high heat. Carefully place the meatballs in the skillet, ensuring not to crowd them (work in batches if necessary). Brown the meatballs on all sides, turning them every 2–3 minutes. They do not need to be cooked through at this stage.
  5. Marry Meatballs & Sauce : Using a slotted spoon, transfer the seared meatballs directly into the simmering tomato sauce. Stir gently to coat. Continue to simmer, partially covered, for 15–20 minutes, or until the meatballs are cooked through and the internal temperature registers 165°F (74°C) on an instant-read thermometer.
  6. Create the Zucchini Ribbons : While the meatballs are finishing, prepare your zucchini. Using a spiralizer or peeler, create long, noodle-like strands.
  7. Flash-Cook the Zoodles : Place the skillet used for the meatballs back over medium heat. Add the spiralized zucchini and sauté for 3–5 minutes, tossing frequently, until they are just tender but still have a slight bite (al dente). Immediately remove from the heat and drain any excess water that has collected in the pan.
  8. Serve and Garnish : Divide the warm zucchini noodles among four shallow bowls. Ladle the sauce and several meatballs over each serving. Garnish with torn fresh basil leaves and an extra sprinkle of Pecorino Romano, if desired.

Notes

👨‍🍳 Chef’s Notes

Storage: Leftovers can be stored in an airtight container in the refrigerator for up to 3 days. For best results, store the zucchini noodles separately from the sauce and meatballs to prevent them from becoming overly soft.
Ingredient Swaps: Feel free to use all ground beef or substitute with ground chicken or turkey for a lighter version. For a spicier kick, add a pinch of cayenne to the meatball mixture. The Pecorino Romano can be swapped for Parmesan if that's what you have on hand.
Troubleshooting Watery Zoodles: To minimize water release from the zucchini, salt the spiralized noodles and let them sit in a colander for 20–30 minutes. Gently squeeze out excess moisture and pat them thoroughly dry with paper towels before cooking.

Nutrition (per serving, approx.):

  • Calories: 414 kcal
  • Protein: 22 g
  • Carbs: 19 g
  • Fat: 28 g (Sat Fat: 8.5 g)
  • Fiber: 7 g
  • Sugar: 10 g
  • Sodium: 853 mg
  • Cholesterol: 125 mg
  • Potassium: 1253 mg