In 19th-century Baltimore, Maryland, several policemen discover a murdered woman sprawled on the floor of her apartment, which was locked from the inside. While police search for the killer's means of escape, they discover a second corpse in the chimney, later identified as the 12-year-old daughter of the first victim. A celebrated detective, Emmett Fields (Luke Evans), is called to assist in the investigation and discovers that the crime resembles a fictional murder in a short story, "The Murders in the Rue Morgue", that he once read.
The writer Edgar Allan Poe (John Cusack) is brought to Fields for questioning. After finding the body of Griswold (John Warnaby), a rival of Poe, cut in half by a pendulum (as in Poe's story "The Pit and the Pendulum"), the pair deduce that someone is staging murders based on Poe's stories. Edgar's love, Emily Hamilton (Alice Eve), is kidnapped at her father's (Brendan Gleeson) masquerade ball, like the one described in Poe's "The Masque of the Red Death". The killer taunts Poe in a note, demanding that Edgar write and publish a new story. Poe's lodgings are burned down by people who believe he is exploiting the murders for his own journalistic ends, and he is forced to move in with Fields.
A clue from the killer referring to "The Cask of Amontillado" leads Poe and Fields to search the tunnels under the city with several policemen, discovering the walled-up corpse of a man dressed as Emily. The man is determined to be a sailor, and the clues on his body bring the pursuers to Holy Cross Church, where an empty grave with Emily's name on it has been prepared. As the police attempt to break down the church doors, the killer attacks and kills one of the policemen, then shoots and wounds Fields. Poe gives chase on horseback, but the killer escapes.
Poe writes one last newspaper column, offering his life for Emily's, suggesting that he could take poison. In the morning, the maid gives Poe a letter from the killer, accepting his terms, but the note was delivered long before the paper was distributed. Realizing that the killer must work at the paper, Poe races to confront his editor, Henry (Kevin McNally), but Henry is already dead, another note lying next to him.
The real killer is the paper's typesetter, Ivan Reynolds (Sam Hazeldine), who congratulates Poe and offers him a drink. Ivan attempts to converse with Edgar, but Poe demands Emily's location. Ivan pours a vial of poison, promising to end the story as Poe had written it. Poe agrees and drinks the liquid. Ivan quotes the "The Tell-Tale Heart", cluing Edgar that Emily is concealed beneath the printing floor. As the killer leaves, Poe uses the last of his strength to tear up a false section of floor and open a trapdoor leading to Emily's prison.
Poe rescues Emily, and they share a poignant moment before she is taken away by ambulance. Delirious from the poison, Edgar wanders off to a park bench to die. A man walking in the park recognizes him as the famous writer, and asks if he is all right. Poe can summon only enough strength to say, "Tell Fields his last name is Reynolds." Later, when Fields comes to view Poe's corpse at the hospital, the attending physician is unable to tell him the exact cause of death, but mentions that the writer was incoherent, insisting that "his last name is Reynolds." Fields ponders the meaning of the phrase, slowly connecting the dots.
Ivan disembarks from a train in Paris. As a porter carries his luggage, Ivan climbs into a carriage and is confronted by Fields. He lunges for the detective, and Fields shoots him at point blank range.
Who is the corpse dressed as?
Emily