The film centres around the forbidden love of William Shakespeare (Joseph Fiennes) and a noble woman, Viola de Lesseps (Gwyneth Paltrow).
As the film begins, Shakepeare's patron Philip Henslowe (Geoffrey Rush) finds himself in debt to loan shark Hugh Fennyman (Tom Wilkinson). Henslowe offers Fennyman a partnership in the upcoming production of Shakespeare's newest comedy, Romeo and Ethel, The Pirate's Daughter promising that it will be a hit. This play will later be renamed Romeo and Juliet and be reworked into a tragedy (but with some comical undertones with a few characters, like the Nurse).
Will Shakespeare is suffering from writer's block and has not completed the play, but begins auditions for Romeo. A boy named Thomas Kent is cast in the role after impressing Shakespeare with his performance and his love of Shakespeare's previous work. Unbeknownst to Shakespeare and the rest of the theater company, Kent is young noblewoman Viola de Lesseps. Viola de Lesseps's dream is to act, but as women were barred from the stage, she must disguise herself as a young man in order to fulfill her dream.
After Shakespeare discovers his star's true identity, he and Viola begin a passionate secret affair. There are strong parallels between the pair's romance and the romance in Romeo and Juliet, including the ballroom scene from act 2 and the balcony scene immediately following it. The element of forbidden love forms the basis of Shakespeare's inspiration, and many of their conversations later show up as some of the most famous quotes in the play.
Inspired by Viola, Shakespeare begins writing feverishly. His work in progress also benefits from the off-hand advice of playwright and friendly rival Christopher Marlowe (Rupert Everett). Yet Shakespeare and de Lesseps know that their romance is doomed. Shakespeare is married, albeit long separated from his wife, and Viola is a noblewoman whose parents would never permit her to marry a commoner such as Shakespeare. In fact, Viola's father has privately arranged a betrothal for her to Lord Wessex (Colin Firth).
Viola is called to the court of Queen Elizabeth I (Judi Dench), and Shakespeare dons a woman's disguise to accompany her. At court, Shakespeare manages to goad Wessex into betting the grand sum of fifty pounds that a play cannot capture the nature of true love. If Romeo and Juliet is a success, Shakespeare as playwright will win the money. The Queen, who enjoys Shakespeare's plays, agrees to be a witness to the wager. The true purpose of the meeting is revealed when Wessex announces his intent to marry Viola.
The Lord of Revels, an official of the Queen, learns that there is a woman in the theater company at the Rose playhouse. He orders the theater closed for this violation of morality and the law. Left without a stage or lead actor, it seems that Romeo and Juliet must close before it even opened. Shakespeare is offered one last chance by the owner of a competing theater, the Curtain, who offers his own theater to Shakespeare. Shakespeare will take the role of Romeo himself, with a boy actor playing Juliet.
Viola learns that the play will be performed on the very day of her wedding. After the ceremony, Viola's loyal nurse (Imelda Staunton) helps her slip away to the theater. In one final twist, mere moments before the play begins, the boy playing Juliet starts experiencing the voice change of puberty. Viola takes the stage to replace him and plays Juliet to Shakespeare's Romeo. Their passionate portrayal of two lovers inspires the entire audience.
The Lord of Revels arrives at the theater with Wessex, who has deduced his new bride's whereabouts. The Lord invokes the name of the Queen to arrest all there for indecency. Suddenly, Elizabeth I's voice rings out from the back of the theater: "Have a care with my name - you will wear it out!" The Queen had decided to attend the play, and says that she will handle this matter herself. Although she recognizes Viola in her guise as Thomas Kent, the Queen does not unmask Viola, instead declaring that the role of Juliet is being performed by the boy Thomas Kent.
However, even a Queen is powerless to break an official marriage of the Church. Queen Elizabeth orders "Thomas Kent" to fetch Viola so that she may sail to America. She also states that Romeo and Juliet has accurately portrayed true love and Wessex is forced to pay Shakespeare the fifty pounds. This is enough to allow Shakespeare become a shareholder in a new theater. The Queen then commissions Shakespeare to write something "a little more cheerful next time." Viola and Shakespeare part, never to meet again. She must accompany Wessex to a colonial settlement in Virginia. Shakespeare immortalizes her by making the main character of his new play, Twelfth Night, a strong young woman named Viola who also disguises herself as a boy.