King Leontes of Sicilia begs his childhood friend, King Polixenes of Bohemia, to extend his visit to Sicilia. Polixenes protests that he has been away from his kingdom for nine months, but after Leontes's pregnant wife, Hermione, pleads with him he relents and agrees to stay a little longer. Leontes, meanwhile, has become possessed with jealousy—convinced that Polixenes and Hermione are lovers, he orders his loyal retainer, Camillo, to poison the Bohemian king. Instead, Camillo warns Polixenes of what is afoot, and the two men flee Sicilia immediately.
Furious at their escape, Leontes now publicly accuses his wife of infidelity, and declares that the child she is bearing must be illegitimate. He throws her in prison, over the protests of his nobles, and sends to the Oracle of Delphi for what he is sure will be confirmation of his suspicions. Meanwhile, the queen gives birth to a girl, and her loyal friend Paulina brings the baby to the king, in the hopes that the sight of the child will soften his heart. He only grows angrier, however, and orders Paulina's husband, Lord Antigonus, to take the child and abandon it in some desolate place. While Antigonus is gone, the answer comes from Delphi—Hermione and Polixenes are innocent, and Leontes will have no heir until his lost daughter is found. As this news is revealed, word comes that Leontes's son, Mamillius, has died of a wasting sickness brought on by the accusations against his mother. Hermione, meanwhile, falls in a swoon, and is carried away by Paulina, who subsequently reports the queen's death to her heartbroken and repentant husband.
Antigonus, meanwhile abandons the baby on the Bohemian coast, reporting that Hermione appeared to him in a dream and bade him name the girl Perdita and leave gold and other tokens on her person. Shortly thereafter, Antigonus is killed by a bear, and Perdita is raised by a kindly Shepherd. Sixteen years pass, and the son of Polixenes, Prince Florizel, falls in love with Perdita. His father and Camillo attend a sheepshearing in disguise and watch as Florizel and Perdita are betrothed—then, tearing off the disguise, Polixenes intervenes and orders his son never to see the Shepherd's daughter again. With the aid of Camillo, however, who longs to see his native land again, Florizel and Perdita take ship for Sicilia, after using the clothes of a local rogue, Autolycus, as a disguise. They are joined in their voyage by the Shepherd and his son, a Clown, who are directed there by Autolycus.
In Sicilia, Leontes—still in mourning after all this time—greets the son of his old friend effusively. Florizel pretends to be on a diplomatic mission from his father, but his cover is blown when Polixenes and Camillo, too, arrive in Sicilia. What happens next is told to us by gentlemen of the Sicilian court: the Shepherd tells everyone his story of how Perdita was found, and Leontes realizes that she is his daughter, leading to general rejoicing. The entire company then goes to Paulina's house in the country, where a statue of Hermione has been recently finished. The sight of his wife's form makes Leontes distraught, but then, to everyone's amazement, the statue comes to life—it is Hermione, restored to life. As the play ends, Paulina and Camillo are engaged, and the whole company celebrates the miracle.