Odysseus (Armand Assante), the king of the ancient Greek kingdom of Ithaca, is called to service in the Trojan War after the birth of his son Telemachus, much to the dismay of his wife Queen Penelope (Greta Scacchi). Odysseus is worried that he may not return, and tells Penelope that she should remarry by the time Telemachus is a man if he does not return. The war lasts ten years, during which Greece's best soldier, Achilles (Richard Trewett), is killed and the Greeks avenge him by using a giant horse to sneak inside and destroy the city of Troy. Laocoön (Heathcote Williams) tries to warn the Trojans of a vision of this, but is suddenly devoured by a sea monster. On the way back, Odysseus' ego gets the best of him and he tells the gods that he did it himself, which angers Poseidon (voiced by Miles Anderson) so much that he promises to make Odysseus' journey home to Penelope nearly impossible, mentioning that it was he who sent the sea monster to devour Laocoön.
Odysseus and his men initially stop on an island dominated by one-eyed giants, the Cyclopes. A Cyclops named Polyphemus (Reid Asato) traps them in his cave intending to eat them, but Odysseus gets him drunk on wine, causing him to pass out. Then, he sharpens a tree branch into a stake and blinds the Cyclops, allowing them to escape by hiding under sheep skins when he removes the heavy stone door. Polyphemus screams for help, but Odysseus had tricked him into stating that his name was "Nobody", so the Cyclops is shouting that nobody has tricked him, arousing no suspicion. Odysseus and his men escape, but Odysseus taunts the Cyclops who asks his father Poseidon to avenge him. This makes Odysseus' journey home harder.
Odysseus travels to an island where Aeolus (Michael J. Pollard) provides him with a bag of wind to help him home, instructing him to open it when he gets close to Ithaca. One of his men opens it prematurely blowing them off course. Next, they stop at the island of Circe (Bernadette Peters), a beautiful witch, who turns his men into animals and blackmails him into sleeping with her. Odysseus is told of Circe's magic by Hermes (Freddy Douglas), who helps him avoid being transformed as well. Circe tells him to go to the Underworld next, and only then does Odysseus realize that he has actually been tricked by Circe, who put a spell on him so he stayed on the island for five years instead of five days. Odysseus digs his ship out of the sand and tide and sails to the Underworld.
Arriving at the Underworld, Tiresias (Christopher Lee) torments Odysseus, recognizing his courage and wit, but criticizes his ego and foolishness. After Odysseus sacrifices a goat into the River Styx, Tiresias tells him that the only way home will take him past a treacherous isle where the monsters Scylla and Charybdis live. As he is running in terror from the underworld, he meets his mother Anticlea (Irene Papas), who committed suicide due to the pain of losing her son. She informs him that back on Ithaca there are multiple suitors, including Eurymachus (Eric Roberts), vying with each other to marry Penelope for her money and power.
Odysseus' boat nears the isle of Scylla and Charybdis. Scylla's six serpentine heads wreak havoc on the crew, killing many. Everyone but Odysseus is killed when Charybdis creates a whirlpool and destroys his ship. Odysseus arrives on the island where Calypso (Vanessa Williams) lives and becomes her prisoner. Meanwhile, Odysseus' now 15-year-old son Telemachus (Alan Stenson) tries to find his father and is told by Athena (Isabella Rossellini) to travel to Sparta and seek out one of his former comrades that fought with him. When Telemachus finds Menelaus (Nicholas Clay), one of Odysseus' comrades, he learns that he doesn't know what happened to Odysseus but believes him to be dead.
Two years later, Hermes arrives, telling Calypso to release Odysseus, and she provides him with a raft to get to Ithaca. Another storm causes problems for Odysseus as he shouts taunts at Poseidon. Poseidon reminds Odysseus about what he said the day he left Troy, and to remember his place as a mere mortal. The next morning, Odysseus washes ashore and is found by some Phaeacians girls. With help from Phaeacian King Alcinous (Jeroen Krabbé), they help Odysseus back to Ithaca. They deliver him at night while he is fast asleep, to a hidden harbor on Ithaca. Upon awakening the next morning, he finds himself on Ithaca where is reunited with Telemachus. Using a peasant disguise provided by Athena, Odysseus meets up with Penelope where she decides to hold a contest to find the person who can string Odysseus' bow. After Odysseus wins the contest, Athena lifts his disguise and Odysseus is assisted by Telemachus in slaying Eurymachus and the suitors. Once the suitors are dead, Odysseus reunites with Penelope.
The creature effects for this miniseries were provided by Jim Henson's Creature Shop where they used a talking animatronic pig roasting on a spit, a CGI for Scylla, a rod puppet sea slug-like sea monster that devours Laocoön, and the full-bodied version of Polyphemus.
The boat used in the series was reused a few years later for the Jason and the Argonauts miniseries.
MPAA rated this film PG-13 for violent sequences and some sensuality.