Moroccan Spaghetti Meatballs with harissa tomato sauce
Herby pork meatballs simmered in a gently spicy harissa tomato sauce, piled over zucchini noodles.
Moroccan spaghetti meatballs are what happens when a weeknight Italian-style dinner borrows the flavors of a North African kitchen. Pork meatballs packed with cilantro, garlic and chili flakes simmer in a tomato sauce warmed with harissa, then get spooned over silky zucchini noodles.
It’s a light-feeling dinner that still tastes rich. The sauce is bright and a little smoky, the meatballs are juicy, and the zucchini keeps everything fresh instead of heavy. It also happens to be paleo, Whole30-friendly and keto-friendly, with no added sugar.
If you’ve ever wanted the cozy, spiced comfort of a classic meatball tagine but only have about 40 minutes and one saucepan to spare, this is a great place to start. Think of it as a quick stovetop cousin of traditional Moroccan meatballs in sauce, not a strict replica.
Why This Moroccan Spaghetti Meatballs Recipe Works
Searing the meatballs before they hit the sauce is the step that builds flavor. The browned crust adds a deeper, roasted note that a plain simmer can’t reach, and it helps the meatballs hold their shape while they finish cooking.
The harissa does double duty. It brings chili heat, but also roasted pepper, garlic and vinegar, so a couple of tablespoons season the sauce far beyond simple spice. Mild harissa keeps it family-friendly while still giving this Moroccan spice meatball recipe real character.
Cilantro stems go into the meatballs along with the leaves. The stems carry plenty of flavor and add moisture, and a teaspoon of arrowroot quietly binds everything without the need for breadcrumbs.
Brown the meatballs first, then let the sauce finish the job. That’s where the depth comes from.
Tips Before You Start
Use 80/20 ground pork. The fat keeps the meatballs tender. Very lean pork tends to turn dry and crumbly, especially since there’s no breadcrumb panade here.
Chop the cilantro finely. Big pieces make the meatballs break apart when you roll them. Stems are fine, just mince them well.
Quick Recipe Information
Ingredients
For the meatballs
- 1 lb ground pork, 80% lean (the fat keeps them juicy; ground lamb or turkey thigh also work)
- 3 cloves garlic, minced (savory backbone)
- 1 medium shallot, minced (milder and sweeter than onion; use ¼ cup finely minced yellow onion if needed)
- 1 tsp dry red chili pepper flakes (gentle heat; reduce for kids)
- 1½ tsp sea salt
- 2 tbsp extra virgin olive oil (adds moisture, and used for searing)
- ¾ cup chopped cilantro, leaves and stems (fresh, herby lift; flat-leaf parsley is the swap)
- 1 large egg (binds the mixture)
- 1 tsp black pepper
- 1 tsp arrowroot powder (grain-free binder; cornstarch works if you’re not strict paleo)
For the tomato harissa sauce
- 1 can (14.5 oz) diced tomatoes, no salt added (lets you control the seasoning)
- 2 tbsp mild harissa (smoky, garlicky heat; I use Mina’s mild harissa, but any mild paste works)
- 1 tsp sea salt
- 1 dry bay leaf (quiet, savory depth)
To serve
- 2 large zucchini, spiralized (the light “spaghetti”; regular pasta or spaghetti squash also work)
- 1 tsp fresh thyme leaves
- Fresh basil leaves, to finish
Equipment Needed
- Large skillet for searing the meatballs
- Medium saucepan with a lid
- Large mixing bowl
- Spiralizer (or a julienne peeler)
- Slotted spoon or tongs
Step-by-Step Instructions
- Mix the meatballs. In a large bowl, combine the pork, garlic, shallot, chili flakes, salt, olive oil, cilantro, egg, black pepper and arrowroot. Mix with your hands just until combined. Overworking makes them tough.
- Shape. Roll into about 20 evenly sized meatballs, roughly the size of a walnut. Even sizes mean even cooking.
- Sear. Heat a skillet over medium-high heat. Brown the meatballs in batches for 2 to 3 minutes per side, until the outsides are golden. They don’t need to cook through yet. Crowding the pan steams them, so leave a little space.
- Start the sauce. In a medium saucepan over medium-high heat, combine the diced tomatoes, harissa, salt and bay leaf. Bring to a slight boil, then lower the heat and simmer with the lid on for about 5 minutes so the flavors come together.
- Simmer the meatballs. Add the seared meatballs to the sauce, cover, and cook 12 to 15 minutes, until cooked through (160°F / 71°C internal for pork) and the sauce has thickened slightly.
- Serve. Divide the zucchini noodles among bowls (raw is crisp, or toss in the hot sauce for 1 minute for a softer bite). Top with meatballs and sauce, then finish with thyme and fresh basil. Remove the bay leaf first.
Moroccan Spaghetti Meatballs
Seared pork meatballs simmered in harissa tomato sauce, served over zucchini noodles.
Ingredients
- 1 lb ground pork (80/20)
- 3 cloves garlic, minced
- 1 medium shallot, minced
- 1 tsp red chili pepper flakes
- 1½ tsp sea salt
- 2 tbsp extra virgin olive oil
- ¾ cup chopped cilantro (leaves + stems)
- 1 large egg
- 1 tsp black pepper
- 1 tsp arrowroot powder
- 1 can (14.5 oz) diced tomatoes, no salt added
- 2 tbsp mild harissa
- 1 tsp sea salt (for sauce)
- 1 dry bay leaf
- 2 large zucchini, spiralized
- 1 tsp fresh thyme
- Fresh basil, to finish
Instructions
- Mix all meatball ingredients. Form about 20 meatballs.
- Pan-sear in batches until golden brown on the outside.
- Combine tomatoes, harissa, salt and bay leaf in a saucepan. Bring to a slight boil, then simmer covered.
- Add meatballs, cover and cook until cooked through, 12 to 15 minutes.
- Serve over zucchini noodles with thyme and basil.
Chef’s Tips
- Salt the sauce lightly. Harissa and canned tomatoes bring their own salt, so taste before adding more.
- Wet your hands when rolling. The mixture is soft and sticks less to damp hands, so the meatballs stay smooth.
- Don’t skip the lid. Simmering covered cooks the meatballs through with steam and keeps the sauce from reducing too fast.
- Salt zucchini noodles only at the table. Salt draws water out and makes them limp and watery.
- Add the herbs at the end. Basil and thyme lose their fresh aroma with long heat, so use them as a finishing touch.
Common Mistakes
Dry, dense meatballs
This usually comes from lean pork or overmixing. Use 80/20 pork and mix only until the ingredients come together. If they’re already dry, simmer a few extra minutes in the sauce to rehydrate them.
Meatballs falling apart
Too much moisture or big pieces of cilantro can be the cause. Chop finely and don’t skip the egg and arrowroot. Also let them form a crust before flipping. If one breaks, just nudge it back together in the sauce.
Watery zucchini noodles
They release liquid when overcooked or salted early. Serve them raw or heat for about a minute only. If the bowl gets watery, pat the noodles dry with paper towels.
Sauce that’s too spicy
Harissa strengths differ. Start with the mild kind and add more gradually. If it’s already too hot, stir in a spoonful of tomato paste or a little extra diced tomato.
Recipe Variations
- Vegetarian: Use finely chopped mushrooms and cooked lentils in place of pork, with extra arrowroot to bind.
- Gluten-Free: The recipe already is, as long as your harissa and canned tomatoes are certified gluten-free.
- Spicy: Use hot harissa or add extra chili flakes and a pinch of cayenne to the sauce.
- Dairy-Free: Already dairy-free as written.
- Low Carb: Zucchini noodles keep it low in carbs; the recipe is also keto-friendly.
- Kid-Friendly: Skip the chili flakes, use mild harissa sparingly, and serve over regular spaghetti.
- Meatball tagine style: Add a pinch of ground cumin, cinnamon and a handful of green olives to the sauce and serve with couscous or cauliflower rice for a closer take on a Moroccan meatball tagine.
Storage & Reheating
- Refrigerate: Store meatballs and sauce in an airtight container for up to 4 days. Keep zucchini noodles separate.
- Freeze: Freeze meatballs in sauce for up to 3 months. Thaw overnight in the fridge.
- Reheat: Warm gently in a covered saucepan over medium-low heat, adding a splash of water if the sauce has thickened.
- Meal prep: Sear and simmer the meatballs ahead, then spiralize the zucchini fresh on the day you eat.
Serving Suggestions
- Cauliflower rice or couscous: Soaks up the harissa sauce nicely, especially for a more traditional plate.
- Crisp cucumber-tomato salad: The cool freshness balances the heat.
- Warm flatbread: Perfect for scooping sauce, if you’re not eating paleo.
- Mint iced tea: Cooling and refreshing alongside spiced food.
For more meatball dinner inspiration, try these Vietnamese lemongrass meatballs or Japanese shiso leaf meatballs. A healthy shakshuka uses a similar spiced tomato base, and paleo spaghetti noodles with cashew cream sauce is another way to enjoy pasta-style dinners without the grains. If you like lamb, see my paleo mini lamb burgers.
Nutrition Information
Per serving (about 431 g). Nutrition values are automatically calculated estimates and will vary with the brands and ingredients you use.
Frequently Asked Questions
- What is a meatball tagine?
It’s a Moroccan dish of spiced meatballs slow-cooked in a tomato sauce, traditionally in a clay tagine pot, often with eggs added at the end. This recipe borrows the flavors but cooks on the stovetop.
- Can I use beef or turkey instead of pork?
Yes. Beef (80/20) or ground lamb works well. For turkey, choose thigh meat, not breast, so they stay moist.
- Is harissa very spicy?
It depends on the brand. Mild versions are warm rather than hot. Start with 2 tablespoons and adjust.
- What if I don’t have harissa?
Mix tomato paste, roasted red pepper, garlic, a pinch of cumin, chili flakes and a splash of vinegar as a quick stand-in.
- Do I have to sear the meatballs?
You can drop them raw into the sauce, but searing adds browned flavor and a firmer texture.
- What can I use instead of arrowroot?
Tapioca starch or cornstarch work in the same amount. Or leave it out; the egg alone will bind them.
- Can I bake the meatballs instead?
Yes. Bake at 400°F (200°C) for 12 to 15 minutes, then add them to the simmering sauce for a few minutes.
- Is this recipe Whole30 and keto friendly?
As written, yes. Check that your harissa, canned tomatoes and any other packaged items have no added sugar or non-compliant ingredients.
- How do I make zucchini noodles without a spiralizer?
Use a julienne peeler, or shave long ribbons with a vegetable peeler for a pappardelle-style bowl.
- How do I know when the meatballs are done?
Pork is safe at 160°F (71°C) inside. They should feel firm and show no pink in the center.
Final Thoughts
Moroccan spaghetti meatballs bring a lot of flavor for very little effort. Sear, simmer, spiralize, and dinner is ready in about 40 minutes, with just one skillet and a saucepan to clean.
It’s also a solid base to play with. Turn up the heat, add olives and cumin for a meatball tagine feel, or swap the noodles for whatever you have on hand. If you make it, save the recipe for your next busy weeknight.
