Quick Recipe Version (TL;DR)
Quick Ingredients
- 1 tbsp unsalted butter
- 2 tbsp extra-virgin olive oil, divided
- 1/2 medium yellow onion, finely minced
- 1 small carrot, finely minced (optional)
- 1 rib celery, finely minced
- 3 cloves garlic, minced
- 1 lb ground beef (80/20)
- 8 oz ground pork
- 1 1/2 tsp kosher salt, 1/2 tsp black pepper
- Pinch nutmeg; 1/4 tsp red pepper flakes (optional)
- 2 tbsp tomato paste
- 1/2 cup dry red wine
- 1 cup crushed tomatoes (unsweetened)
- 1 cup unsalted beef broth
- 1 bay leaf; 1 tsp dried oregano
- 1/2 cup heavy cream
- 5 medium zucchini (about 2 lb), spiralized
- 1/2 tsp kosher salt (for zoodles)
- 1/2 cup grated Parmesan; 1/4 cup sliced fresh basil
Do This
- 1. Sauté onion, celery, and optional carrot in 1 tbsp olive oil + butter over medium heat until soft, 6–8 minutes; add garlic 30 seconds.
- 2. Brown beef and pork, breaking up, 8–10 minutes; season with salt, pepper, nutmeg, and red pepper flakes.
- 3. Stir in tomato paste and cook 1–2 minutes; deglaze with red wine and reduce by half, 2–3 minutes.
- 4. Add crushed tomatoes, broth, bay leaf, and oregano; bring to a simmer, then cook on low, partially covered, 75 minutes, stirring occasionally.
- 5. Stir in heavy cream and simmer 5 minutes; adjust seasoning and discard bay leaf.
- 6. Sauté zoodles in 1 tbsp olive oil over medium-high heat 2–3 minutes; season. Serve ragù over zoodles with basil and Parmesan.
Why You’ll Love This Recipe
- Keto-friendly comfort: rich, slow-simmered ragù with just-right tomatoes, finished luxuriously with cream.
- Balanced flavors: red wine, tomato paste, aromatics, and a hint of nutmeg for classic depth.
- Weeknight-to-weekend: hands-off simmering, easy zoodles, restaurant-level results.
- Make-ahead star: sauce freezes beautifully and tastes even better the next day.
Grocery List
- Produce: Yellow onion, carrot (optional), celery, garlic, zucchini, fresh basil.
- Dairy: Unsalted butter, heavy cream, Parmesan cheese.
- Pantry: Extra-virgin olive oil, tomato paste, crushed tomatoes, unsalted beef broth, dry red wine, bay leaf, dried oregano, kosher salt, black pepper, ground nutmeg, red pepper flakes (optional), ground beef, ground pork.
Full Ingredients
For the Slow-Simmered Ragù
- 1 tbsp unsalted butter
- 1 tbsp extra-virgin olive oil
- 1/2 medium yellow onion (about 3.5 oz / 100 g), finely minced
- 1 small carrot, finely minced (optional, classic but adds a bit of carbs)
- 1 rib celery, finely minced
- 3 cloves garlic, minced
- 1 lb (454 g) ground beef, 80/20
- 8 oz (227 g) ground pork
- 1 1/2 tsp kosher salt, plus more to taste
- 1/2 tsp freshly ground black pepper
- 1/8 tsp ground nutmeg
- 1/4 tsp red pepper flakes (optional)
- 2 tbsp tomato paste
- 1/2 cup (120 ml) dry red wine
- 1 cup (240 g) crushed tomatoes or passata, unsweetened
- 1 cup (240 ml) unsalted beef broth
- 1 bay leaf
- 1 tsp dried oregano (or Italian seasoning)
- 1/2 cup (120 ml) heavy cream
For the Zoodles
- 5 medium zucchini (about 2 lb / 900 g), spiralized on a medium blade
- 1 tbsp extra-virgin olive oil
- 1/2 tsp kosher salt
- 1/4 tsp freshly ground black pepper
To Finish
- 1/2 cup (40 g) freshly grated Parmigiano-Reggiano, plus more for serving
- 1/4 cup fresh basil leaves, thinly sliced

Step-by-Step Instructions
Step 1: Prep and spiralize
Finely mince the onion, celery, and optional carrot; mince the garlic. Spiralize the zucchini on a medium blade and set aside on a towel-lined tray to absorb moisture. Keep the Parmesan grated and basil sliced for serving.
Step 2: Build the aromatic base
Heat a large Dutch oven over medium heat. Add the butter and 1 tbsp olive oil. Sauté the onion, celery, and optional carrot with a pinch of salt until softened and lightly golden, 6–8 minutes. Add garlic and cook 30 seconds until fragrant.
Step 3: Brown the beef and pork
Add the ground beef and pork. Break up with a spoon into small pieces and cook, undisturbed for 2–3 minutes to encourage browning, then continue to brown, 8–10 minutes total. Season with 1 1/2 tsp kosher salt, 1/2 tsp black pepper, nutmeg, and red pepper flakes (if using). Browning well at this stage builds deep flavor.
Step 4: Add tomato paste and deglaze with wine
Stir in the tomato paste and cook 1–2 minutes to caramelize. Pour in the red wine and scrape up browned bits. Simmer until the wine is reduced by about half, 2–3 minutes.
Step 5: Simmer low and slow, then enrich with cream
Add the crushed tomatoes, beef broth, bay leaf, and oregano. Bring to a gentle simmer, then reduce heat to low. Partially cover and simmer for 75 minutes, stirring every 10–15 minutes. Aim for a quiet, gentle simmer; if you use an infrared thermometer, keep the surface around 190–200°F. Remove the lid for the last 10 minutes if you prefer a thicker sauce. Stir in the heavy cream and simmer 5 minutes more. Taste and adjust salt and pepper. Discard the bay leaf.
Step 6: Sauté the zoodles
About 5 minutes before serving, heat a large skillet over medium-high heat and add 1 tbsp olive oil. Add the zucchini noodles, 1/2 tsp salt, and 1/4 tsp pepper. Toss just until bright green and crisp-tender, 2–3 minutes. Do not overcook or they will weep liquid. Transfer to a colander for 30–60 seconds to drain excess moisture.
Step 7: Plate and finish
Twirl zoodles into warm shallow bowls. Spoon the beef-and-pork ragù generously over the top. Shower with Parmesan, scatter with basil, and add a few cracks of black pepper. Serve immediately.
Pro Tips
- Use higher-fat ground beef (80/20) for a richer, silkier sauce that stays keto-friendly.
- Let the meat brown in contact with the pot for a few minutes before stirring for maximum flavor.
- Tomato paste should darken slightly before adding wine; that caramelization deepens sweetness without added sugar.
- Zoodles cook fast. Stop at crisp-tender and drain briefly to avoid a watery bowl.
- For thicker sauce, simmer uncovered for the last 10 minutes or whisk in 1 tbsp grated Parmesan to emulsify.
Variations
- Pancetta boost: Start by sautéing 3 oz finely diced pancetta in the fat until lightly crisp, then proceed with aromatics.
- No-wine option: Replace wine with 1/2 cup beef broth plus 1 tsp red wine vinegar for brightness.
- Dairy-free: Swap heavy cream for 1/3 cup unsweetened coconut cream and omit Parmesan; garnish with extra basil and olive oil.
Storage & Make-Ahead
Ragù keeps 4 days in the refrigerator and up to 3 months in the freezer. Cool completely, then store airtight. Reheat gently over low heat, adding a splash of broth or cream if needed. Zoodles are best cooked to order; store raw spiralized zucchini in a sealed container with paper towels up to 3 days. If making ahead for meal prep, keep sauce and zoodles separate until serving.
Nutrition (per serving)
Approximate: 700 calories; 51 g fat; 42 g protein; 13 g net carbs. Nutrition excludes the optional carrot and assumes 1/2 cup heavy cream and 1/2 cup Parmesan divided among 4 servings.

