Place the onion, garlic, carrot, celery, parsley and coriander stalks, and sweet potato or pumpkin in the bowl of a food processor and blitz until finely chopped. You may need to stop the processor a couple of times to scrape down the sides of the bowl.
Season the lamb shanks with some salt and pepper.
Heat 1 tbsp of oil in a large casserole or stockpot over medium-high heat. When hot, add the lamb shanks and cook until browned all over. Remove the shanks from the pot and set them aside while you cook the vegetables.
Add another tablespoon or two of oil to the pot and add the vegetables. Season well with a good pinch of salt and a few grinds of pepper. Cook over medium heat for 10 minutes or so to soften the vegetables. Add the ras el hanout and cook for a minute or until fragrant. Add the tomato paste and cook for another minute. Now add the lamb shanks back to the pot along with the chickpeas and water or stock. Pop a lid on the pot and bring to a boil, then reduce heat and simmer for about 2 hours, or until the lamb is falling off the bone and the chickpeas are tender.
Remove the lamb shanks from the pot, pull the meat off the bones, then return the meat to the soup. Taste and adjust seasoning as required. Add the couscous and stir through, place the lid back on the pot and allow to stand for 5-10 minutes to soften the couscous. Stir through most of the chopped parsley and coriander, reserving some for garnish.
Combine the yoghurt and preserved lemon in a bowl.
To serve, ladle the soup into serving bowls, sprinkle with chopped herbs and dollop with the preserved lemon yoghurt. Serve with crusty bread or flatbreads.