A woman named Elise (Angelina Jolie) is being trailed in Paris by French police working with Scotland Yard. At a cafe, she receives a letter from Alexander Pearce, a former lover, with explicit directions to board a train to Venice, Italy, pick out a man who resembles him, and make the police believe that this man is Alexander Pearce. A mysterious stranger, not involved with the police, also seems to be watching Elise. Elise burns the letter and boards a train.
She takes a seat across from Frank (Johnny Depp), an American tourist reading a spy novel. Frank is instantly attracted to her. The train arrives in Venice, and she invites him to go with her on a boat to the Hotel Danieli. At dinner, much to Frank's dismay, Elise admits to having feelings for another man, presumably Alexander Pearce. Later, on her room's balcony they share a kiss, witnessed by the men following her.
The next day, Frank awakens to find Elise gone. Men suddenly try to break into the hotel room. Frank barely escapes by running over several roofs in his pajamas, but is caught by the Italian police. A sympathetic detective listens to Frank's story that he does not know why these men are after him. He takes Frank from the jail and tells him that his story checks out and that the men after him were Belarusians, who have placed a price on his head and believe Frank to be someone else. The detective, however, then delivers Frank into the clutches of these same men, in order to collect the money they promised.
Elise suddenly appears with a boat to rescue Frank, and they flee together. Elise finally tells Frank that all this is happening because she kissed him and made the police believe that he was Alexander Pearce. Frank learns that Pearce stole two billion dollars from a gangster named Shaw (Steven Berkoff) and is also wanted by the British Government for tax evasion. Stunned by the news, Frank says he still does not regret kissing Elise.
Elise apologizes for getting him involved at all and tricks Frank off the boat. Frank says he loves her. Elise goes to a government building. She turns out to be a British secret agent. She sees her fellow British agent Acheson (Paul Bettany), who was among those following her in Paris. Elise was supposed to work undercover against Pearce but fell in love with him and had disappeared from her job until now. She tells Acheson that she is ready to help him find Pearce now because she wants to prevent anybody else from getting hurt.
Elise goes to a ball Pearce has invited her to attend, wearing a wire. She is handed a letter by the same mysterious stranger from Paris. The letter is from Pearce, saying where to meet him. As Elise turns to leave, Frank appears and prevents her exit. They dance. Elise leaves to find Pearce, and agent Acheson's men apprehend Frank. They both watch on surveillance equipment as Elise walks into a trap set by the gangster Shaw. The gangster threatens to kill her unless she reveals the location of the safe holding the money Pearce stole from him. Agent Acheson doesn't intervene for his colleague Elise, confident that Pearce will show up to rescue her.
Elise reveals the safe's location but does not know its code. Frank watches in horror as Elise is threatened yet again. Seeing that Acheson won't help Elise, Frank picks the lock to his handcuffs and escapes to help her. Frank pretends to be Pearce. Elise begs him to stop or he will be killed. Frank, acting as Pearce, tells Shaw that he will get his money, but only if Elise is first released and safe. As Frank pretends that he is about to open the safe, Elise mouths "I love you."
All of a sudden, Chief Inspector Jones (Timothy Dalton) gives the order for the police snipers to shoot Shaw and his men. Frank and Elise are unharmed. As the police survey the scene, agent Acheson can't believe that Pearce did not save Elise, and Jones is furious with him for exposing her to danger. Jones then informs Elise that she has been terminated from the force. A police report informs them that Pearce has just been caught. As the room clears, Elise and Frank embrace. He asks her if she loves both him and Alexander Pearce. Elise answers yes. To spare her from this dilemma, Frank demonstrates that he is the real Alexander Pearce by entering the correct code for the safe. Pearce had gotten plastic surgery, so he could have a new life.
Meanwhile, the arrested man believed to be Pearce explains to police that he was paid to pose as him but that he is really just a tourist. Elise and Frank/Pearce leave on a boat with the money, finally being able to be together. In the open safe, police find a bankers check for the 744 million pounds in back taxes Pearce owed the British government.