Preheat oven to 325°. Heat 2 tablespoons olive oil in a large Dutch oven over high heat. Meanwhile, liberally season leg of lamb with salt and pepper. When oil begins to smoke, sear leg of lamb thoroughly on all sides until well browned. Remove from pan and set aside.
Reduce flame to a moderately high heat. Add the remaining tablespoon of olive oil and onions, then saute, stirring occasionally, until onions begin to brown, about 10 minutes. Add coriander, cumin, cinnamon, cloves, garlic, and ginger, then saute, stirring with a wooden spoon, until very fragrant, about 2 minutes. Add beef and chicken stocks or broths, then boil vigorously 10 minutes with the lid off.
Return leg of lamb to pan. The liquid should cover one-half to two-thirds of the lamb. Adjust liquid if necessary. Cover pan and place in oven. After about 90 minutes, turn leg of lamb over and add carrots, raisins, apricots, olives, and honey, then stir. Cover and return to oven. Cook 1 hour or longer, until meat is very tender and separates easily with a fork. Remove lamb from pan; keep warm. Skim excess fat from the sauce, adjust seasoning with salt and pepper, then stir in lemon juice and zest.
Slice lamb into ½-inch slices across the grain. Serve with sauce atop couscous or rice and garnish with cilantro.