Combine lamb, onion, garlic, spices and oil in a bowl. Cover and refrigerate for a couple of hours or overnight.
Heat a non-stick frying pan, add lamb in batches and fry until lightly browned all over. As meat is cooked, place in a tagine or casserole dish.
Add tomatoes and 1 cup cold water. Bring to the boil, then reduce heat to low and simmer, covered, for 1 hour.
Add sweet potato. Cook, uncovered, for 20–25 minutes, or until lamb is tender and sauce has thickened slightly. Season well with pepper and stir in half of the coriander.