Soften the onion
Warm the olive oil in a large casserole dish or heavy-based saucepan over medium-low heat. Add the sliced onion and cook gently, stirring from time to time, until soft.
Add the tomato and spices
Stir in the garlic, chopped tomatoes, tomato purée, ginger, turmeric, paprika, black pepper and saffron. Cook briefly so the spices become fragrant.
Add the stock
Pour in the vegetable stock, stir well and bring the mixture to a gentle simmer.
Cook the firm vegetables
Add the carrots, aubergine and cabbage. Cover the pan and simmer gently.
Add the remaining vegetables and chickpeas
Add the butternut squash, courgettes and chickpeas. Cover again and continue simmering until the vegetables are tender while still holding their shape.
Finish the stew
Stir in most of the parsley and coriander, keeping a little of each for serving. Taste the broth and season with salt as needed.
Begin cooking the onions
While the stew cooks, warm the olive oil in a separate saucepan over low heat. Add the onions, cinnamon stick, ground cinnamon, black pepper, ras el hanout and turmeric, then cook gently, stirring occasionally.
Caramelise the tfaya
Add the sultanas, sugar and water. Cook slowly, stirring regularly, until the onions are very soft, dark and sticky. Add an extra splash of water if the mixture starts to catch before the onions are ready.
Remove the cinnamon stick
Take out and discard the cinnamon stick before serving.
Combine the couscous
Put the couscous in a large heatproof bowl and mix in the salt. Add the olive oil or butter, pour over the boiling water and stir once.
Cover and steam
Cover the bowl tightly with a plate, lid or food wrap and leave the couscous to absorb the water.
Fluff the grains
Remove the cover and fluff the couscous thoroughly with a fork, breaking up any clumps.
Assemble the couscous
Spoon the couscous onto a tagine base or large serving dish. Arrange the vegetables and chickpeas over the top, positioning the carrots and courgettes in a pyramid shape.
Add the broth and toppings
Spoon over enough vegetable broth to moisten the couscous without making it soggy. Top with the tfaya, if using, and scatter over the reserved parsley and coriander.
Serve the extra broth
Pour the remaining broth into a jug or bowl and serve it separately for adding at the table.