Heat 1 tablespoon olive oil in a skillet over medium-low heat; cook and stir onion in the hot oil until lightly browned and very tender, about 30 minutes.
Stir couscous into onion mixture; turn heat to medium. Cook and stir couscous until fragrant and lightly browned, about 5 minutes. Pour broth over couscous mixture and bring to a boil; reduce heat, cover skillet, and simmer until couscous has absorbed all the liquid, 5 to 10 minutes.
Heat remaining 1 tablespoon olive oil in a small skillet over medium heat; cook and stir ham in the hot oil until lightly browned, 5 to 7 minutes.
Mix ham, dates, almonds, olives, parsley, salt, and pepper into couscous mixture; cook and stir until heated through, 2 to 3 minutes.