Homemade Moroccan meatballs with herb couscous photo

Bright spices, tender meatballs and fluffy herb-studded couscous — this is the kind of dinner I make when I want something that feels special without being fussy. The sauce is tomato-forward with warm notes of cumin and cinnamon; the meatballs are spiced with dukkah and grated onion so they stay juicy. It takes a little attention but nothing complicated, and the result feeds a hungry family or gives you satisfying leftovers.

I like making this on a weekend because the aromas fill the house, but it’s straightforward enough for a weeknight if you prep a few things in advance. The couscous is fast and forgiving; the meatballs brown quickly and finish gently in the sauce so they stay moist. You’ll find the balance of textures — crispy edges on the meatballs, silky sauce, and fluffy, herby grains — is what keeps me coming back.

Below I give a clear shopping list, exact step-by-step instructions, and practical notes so you can execute this with confidence. Read through once, then get started: the process is very rewarding and the plate is worth every minute.

Shopping List

Savory Moroccan meatballs with herb couscous image

  • 500 grams lean beef or lamb mince — I used organic, extra lean mince; this makes the meatballs substantial and juicy.
  • 1 onion (grated) — folded into the mince to add moisture and bind the mixture.
  • 1 garlic clove (crushed) — for the mince; gives a gentle background garlic note.
  • a pinch of dried chilli flakes — as hot as you would like; I used smoked chilli flakes to add depth.
  • 2 Tbs dukkah — the crunch and nutty spice that lift the meatball flavour.
  • 1 tsp ground cumin — warms the meatballs; also used later in the sauce.
  • salt — it needs a fair bit; salt seasons the meat and brings flavours forward.
  • black pepper — to taste; seasons the meat and sauce.
  • olive oil for frying — for browning the meatballs and softening the sauce onion.
  • 1 onion (finely chopped) — for the sauce; softens and forms the base of the tomato sauce.
  • 2 cloves of garlic (crushed) — for the sauce; adds aromatic lift.
  • 2 x 400 gm tins of chopped peeled tomatoes — the body of the sauce; chunky, acidic and comforting.
  • 200 ml chicken or lamb stock — adds savoury depth; use whichever you have on hand.
  • 1 tsp cumin — for the sauce; echoes the cumin used in the meatballs.
  • 1/2 tsp cinnamon — a little warmth and Moroccan character.
  • 1 tsp chilli flakes — again I used smoked; adjust to your heat preference.
  • salt to taste — for the sauce; season after it has reduced slightly.
  • fresh coriander/cilantro to garnish — roughly chopped, scattered over the finished dish to refresh it.

Herb couscous

  • 200 grams couscous — I prefer wholewheat couscous; it’s tastier and better for you.
  • a glug of olive oil or 30 gms of butter — optional; I prefer olive oil for the couscous for a lighter finish.
  • 350 ml chicken stock — for cooking the couscous so it’s properly seasoned.
  • 1/2 bunch parsley (chopped) — 2 T of chopped parsley folded through the couscous for freshness.
  • 1/2 bunch coriander/cilantro (chopped) — 2 T of chopped coriander/cilantro mixed through and used to garnish.

Moroccan meatballs with herb couscous — Do This Next

  1. Put 500 grams lean beef or lamb mince in a large bowl. Add 1 grated onion, 1 crushed garlic clove, a pinch of dried chilli flakes (to taste), 2 Tbs dukkah, 1 tsp ground cumin and salt and pepper (season generously). Mix with your hands until well combined.
  2. Shape the mixture into smallish meatballs, keeping them roughly the same size so they cook evenly. Set them on a plate.
  3. Heat enough olive oil in a non-stick frying pan to coat the base over a medium-high heat. Fry the meatballs in batches, turning so they brown on all sides. Remove browned meatballs to a plate lined with kitchen paper and keep them warm. (If the pan gets crowded, do smaller batches.)
  4. Reduce the heat to medium and add a little more olive oil to the same pan. Add the sauce onion (1 onion, finely chopped) and 2 crushed garlic cloves. Cook, stirring, until the onion has softened, about 5 minutes.
  5. Add the sauce spices (1 tsp cumin, 1/2 tsp cinnamon and 1 tsp chilli flakes) to the softened onion and garlic and cook for about 30 seconds until fragrant.
  6. Pour in the 2 x 400 g tins of chopped peeled tomatoes and 200 ml chicken or lamb stock. Stir, bring to a boil, then reduce the heat and simmer for about 10 minutes until the sauce has slightly thickened. Taste and add salt as needed.
  7. Return the browned meatballs to the sauce, submerging them as much as possible. Simmer gently for 8–10 minutes, or until the meatballs are cooked through (no pink in the centre) and the sauce has thickened to your liking.
  8. While the meatballs finish cooking, make the herb couscous: bring 350 ml chicken stock to the boil. Put 200 g couscous in a heatproof bowl, add a glug of olive oil (or 30 g butter, optional), then pour the boiling stock over the couscous. Stir once, cover the bowl, and leave to stand until the liquid is absorbed (about 5 minutes).
  9. Uncover the couscous and fluff with a fork. Stir in 2 T chopped parsley and 2 T chopped coriander/cilantro.
  10. Serve the meatballs and sauce over the herb couscous and scatter additional roughly chopped fresh coriander/cilantro over the top to garnish.

Why I Love This Recipe

This recipe balances simplicity with layered flavour. The meatballs are seasoned but not overloaded, which lets the dukkah and cumin shine through while the sauce brings acidity, warmth and a little sweetness from the tomatoes. That cinnamon in the sauce is a small touch that shifts the whole dish into Moroccan territory without being cloying.

It’s also practical: the couscous cooks in the time it takes the sauce to finish, so you don’t need to babysit multiple pots. You can scale the heat up or down by adjusting the chilli flakes, and the choice between beef or lamb mince lets you tailor it to what you prefer or what’s in the fridge.

Smart Substitutions

Delicious Moroccan meatballs with herb couscous recipe photo

  • Lean beef or lamb mince — choose either based on your preference; lamb gives a deeper, more traditional flavour, beef keeps it lighter.
  • Olive oil or 30 g butter for couscous — olive oil keeps things lighter and dairy-free; butter gives a silkier mouthfeel.
  • 200 ml chicken or lamb stock — use whichever stock you have; both add necessary savoury depth to the sauce and couscous.
  • Wholewheat couscous — I prefer wholewheat but regular couscous will work if that’s what you have.

Cook’s Kit

Quick Moroccan meatballs with herb couscous dish photo

  • Large mixing bowl — for combining the mince and aromatics by hand.
  • Non-stick frying pan — for browning meatballs and building the sauce in the same pan.
  • Plate lined with kitchen paper — to drain excess oil from fried meatballs.
  • Heatproof bowl and fork — for rehydrating and fluffing the couscous.
  • Wooden spoon or spatula — for stirring the sauce without scraping the pan.

Problems & Prevention

Meatballs falling apart: if the mixture feels loose, chill it for 10–15 minutes before shaping. The grated onion adds moisture; you don’t need extra binder for these small meatballs because the dukkah and cold hands help compact them.

Burning while browning: don’t overcrowd the pan. Brown in batches so each meatball gets good colour. If the pan smoke builds up, lower the heat slightly and add a touch more oil.

Sauce too thin: simmer uncovered for a few extra minutes to reduce. Sauce too thick: stir in a splash of stock until it reaches the texture you like.

Tailor It to Your Diet

If you prefer a milder dish, reduce the chilli flakes in both the meatballs and the sauce. For a richer finish, use butter instead of olive oil in the couscous. To keep it lean, choose lean beef and use olive oil sparingly for frying. The recipe uses pantry-friendly spices and flexible stock choices, so minor adjustments for salt and heat are the main levers for tailoring to your household.

Cook’s Notes

Shape the meatballs to a uniform size so they cook evenly; I aim for roughly walnut-sized. Browning is about flavour — get good colour before moving the meatballs to the sauce. When adding them to the sauce, try to submerge them as much as possible so they cook through gently and absorb the tomato flavours.

Make the couscous right before serving. It’s fast and tastes best when freshly fluffed and mixed with the chopped herbs. If you’re preparing this for guests, you can brown the meatballs ahead and finish them in the sauce just before they arrive.

Freezer-Friendly Notes

These meatballs freeze well once browned and cooled. Cool completely, then transfer to a single layer on a tray and freeze. Once solid, move to a sealed container or freezer bag. You can freeze them plain or submerged in sauce — just cool the sauce first before packing.

Thaw overnight in the fridge and reheat gently in a pan with a splash of stock, or bake in a moderate oven until heated through. The couscous doesn’t freeze as well; prepare fresh when you reheat the meatballs.

Troubleshooting Q&A

Q: My meatballs are dry after cooking. A: They likely overcooked or were too large. Keep them smallish and check for doneness at the lower end of the 8–10 minute simmer time. Make sure you browned them rather than cooked them through in the pan — the sauce finishing step is brief.

Q: The sauce tastes flat. A: Taste for salt and acidity. Add a little more salt if needed and let the sauce reduce longer to concentrate flavours. The final garnish of fresh coriander/cilantro brightens the whole dish — don’t skip it.

Q: Couscous turned gummy. A: You probably stirred it too much while it was absorbing stock. After pouring the boiling stock over the couscous, stir once, then cover and leave alone for about 5 minutes before fluffing with a fork.

Let’s Eat

Serve generous scoops of the herb couscous on warm plates, spoon the meatballs and rich tomato sauce over the top, and scatter the fresh coriander/cilantro. The dish pairs nicely with simple sides — a green salad or steamed greens — but it stands well on its own as a satisfying, fragrant main.

Leftovers are excellent the next day: the flavours meld and the sauce deepens. Reheat gently and add a splash of stock if needed to loosen the sauce. Enjoy — this one is a dependable weeknight showstopper and a keeper in my rotation.

Homemade Moroccan meatballs with herb couscous photo

Moroccan meatballs with herb couscous

Spiced Moroccan-style meatballs simmered in a tomato sauce, served over herb-studded couscous.
Prep Time20 minutes
Cook Time30 minutes
Total Time50 minutes
Servings: 4 servings

Ingredients

Ingredients

  • 500 gramslean beef or lamb minceI used organic extra lean mince
  • 1 onion grated
  • 1 garlic clove crushed
  • a pinch of dried chilli flakes as hot as you would like. I used smoked chilli flakes
  • 2 Tbsdukkah
  • 1 tspground cumin
  • saltit needs a fair bit and pepper
  • olive oil for frying
  • 1 onion finely chopped
  • 2 clovesof garlic crushed
  • 2 x 400 gm tins of chopped peeled tomatoes
  • 200 mlchicken or lamb stock
  • 1 tspcumin
  • 1/2 tspcinnamon
  • 1 tsp chilli flakesagain I used smoked
  • salt to taste
  • fresh coriander/cilantro to garnish
  • Herb couscous
  • 200 gramscouscousI prefer wholewheat couscous it’s tastier and better for you
  • a glug of olive oil or 30 gms of butterI prefer using olive oil – optional
  • 350 mlchicken stock
  • 1/2 bunch parsley chopped2 T of chopped
  • 1/2 bunch coriander/cilantro chopped2 T of chopped

Instructions

Instructions

  • Put 500 grams lean beef or lamb mince in a large bowl. Add 1 grated onion, 1 crushed garlic clove, a pinch of dried chilli flakes (to taste), 2 Tbs dukkah, 1 tsp ground cumin and salt and pepper (season generously). Mix with your hands until well combined.
  • Shape the mixture into smallish meatballs, keeping them roughly the same size so they cook evenly. Set them on a plate.
  • Heat enough olive oil in a non-stick frying pan to coat the base over a medium-high heat. Fry the meatballs in batches, turning so they brown on all sides. Remove browned meatballs to a plate lined with kitchen paper and keep them warm. (If the pan gets crowded, do smaller batches.)
  • Reduce the heat to medium and add a little more olive oil to the same pan. Add the sauce onion (1 onion, finely chopped) and 2 crushed garlic cloves. Cook, stirring, until the onion has softened, about 5 minutes.
  • Add the sauce spices (1 tsp cumin, 1/2 tsp cinnamon and 1 tsp chilli flakes) to the softened onion and garlic and cook for about 30 seconds until fragrant.
  • Pour in the 2 x 400 g tins of chopped peeled tomatoes and 200 ml chicken or lamb stock. Stir, bring to a boil, then reduce the heat and simmer for about 10 minutes until the sauce has slightly thickened. Taste and add salt as needed.
  • Return the browned meatballs to the sauce, submerging them as much as possible. Simmer gently for 8–10 minutes, or until the meatballs are cooked through (no pink in the centre) and the sauce has thickened to your liking.
  • While the meatballs finish cooking, make the herb couscous: bring 350 ml chicken stock to the boil. Put 200 g couscous in a heatproof bowl, add a glug of olive oil (or 30 g butter, optional), then pour the boiling stock over the couscous. Stir once, cover the bowl, and leave to stand until the liquid is absorbed (about 5 minutes).
  • Uncover the couscous and fluff with a fork. Stir in 2 T chopped parsley and 2 T chopped coriander/cilantro.
  • Serve the meatballs and sauce over the herb couscous and scatter additional roughly chopped fresh coriander/cilantro over the top to garnish.

Equipment

  • Large Bowl
  • Non-stick frying pan
  • Plate
  • kitchen paper
  • Heatproof bowl
  • Fork

Notes

Notes
Please make sure to store leftover meatballs in sauce separately from the cous cous. Both can be stored in the fridge for up to 4-5 days.

Similar Recipes

Leave a Reply

Your email address will not be published. Required fields are marked *

Recipe Rating