Douglas Quaid (Arnold Schwarzenegger) is a construction worker in the distant future. He is happily married to Lori (Sharon Stone), but is dissatisfied with his place in life. She teases him about a recurring nightmare about being on Mars with a beautiful woman who is not his wife. On the way to work he sees an advertisement on the subway TV for ReKall, Inc., a facility that implants fake memories of ideal vacations. Against the advice of his co-worker Harry (Robert Costanzo), Doug visits ReKall and orders a special package that will implant memories of an adventure trip on Mars as a secret agent. Before the procedure begins, he is asked to select a woman of his choice. He chooses a brunette, with an athletic body, and a sleazy and demure personality.
Before the memory implantation procedure can begin, Quaid goes into a violent rage, ranting about his cover being blown and how men are coming to kill him. He tries to break free of his restraints, and the ReKall director tries to calm Quaid. Quaid responds by throttling him and muttering, "My name is not Quaid!" The technicians tranquilize him and he falls unconscious. The ReKall director believes that Doug was acting out the secret agent part of the trip, but learns that the memories have not yet been implanted. The technicians realize that Doug's memory had previously been erased. To cover their involvement, the ReKall director orders his team to erase his memories of Rekall, refund his credits, and send him home.
Quaid awakens in a Johnny Cab that takes him to a subway station where he can catch a train home. While walking through the subway, he is attacked and detained by several men led by Harry, his co-worker. They accuse him of blabbing about Mars while he was at ReKall, although because ReKall erased his memory, Quaid cannot remember anything about ReKall or being on Mars. Harry prepares to shoot Quaid, but Quaid fights back, successfully killing off Harry and all of his men. He doesn't understand how he could have these skills and is horrified at his actions.
Quaid rushes back home to Lori and tells her what happened. She recognizes that he's regained his memory of Mars and attacks him. They fight and Doug subdues and interrogates her. Holding a gun that he took from her to her head, Quaid pressure Lori into revealing that his original identity has been erased and a new one implanted, which included her as his wife so she could watch over him for past six weeks. An astonished Quaid asks, "If I'm not me, who the hell am I?"
A video monitor in Quaid's apartment displays the arrival of several men with weapons outside their apartment building. Quaid knocks Lori out and flees. He is pursued by Lori's real husband Richter (Michael Ironside), an agent of a mysterious Agency led by Vilhos Cohaagen (Ronny Cox), the corporate dictator of Mars. Richter is intent on killing Quaid who he apparently knew on Mars. Lori greets Richter as her real-life husband. Richter and his men try to kill Quaid as they chase him through the streets and into an underground subway station. As Quaid escapes he kills some of Richter's men. Cohaagen contacts Richter and asks about the gunfight. Richter explains that he is "trying to neutralize a traitor." Cohaagen angrily orders Richter not to kill Quaid because they still need him. He tells Richter that Quaid must be captured alive for re-implantation. Richter, intent on killing Quaid, pretends he has a bad connection and hangs up. Richter's right-hand man, Helm, tells Richter they've located Quaid using a tracking device.
Doug finds a room in a cheap, anonymous hotel, but a mysterious man calls him in his room and tells him he as a suitcase for him. Quaid, puzzled, asks who he is. The man says they were agents together on Mars. He tells Quaid that there is a bug inside his skull that allows Richter to track him. Following the man's instructions, Quaid wraps his head in a wet towel to disrupt the tracking signal. He gets the suitcase and as he is leaving the hotel Richter and Helm arrive. They chase Quaid in another Johnny Cab taxi who escapes their violent pursuit and flees to an abandoned factory. Richter uses the tracking device to follow Quaid there.
When Quaid opens the case a screen plays a recording of himself. He finds a variety of spy gear inside the suitcase. The recording tells Quaid he was originally Hauser, a high-ranking member of the Agency and Cohaagen's key agent. In the recording, Hauser tells Quaid that he met Melina (Rachel Ticotin), an agent for rebels on Mars, and that she convinced him to switch sides. Hauser says that Cohaagen discovered his treason, the Agency erased his identity and a new one implanted. In the new identity, Quaid was exiled to Earth where he could be watched. Hauser tells Quaid how to remove the tracking device from his skull. After Quaid successfully extracts the bug, Hauser tells him to go to Mars and connect with the rebels to help destroy Cohaagen's empire.
Quaid arrives on Mars at a giant domed mining colony half-buried in the martian landscape. Many of the people living on Mars are deformed and possess psychic abilities caused by the mixture of solar radiation and shoddy air quality provided by Cohaagen. Cohaagen's men follow Quaid to Mars and locate him in the immigration and customs facility. They attempt to kill Quaid but he escapes.
Later in Cohaagen's office, he angrily tells Richter that he doesn't have all the information about Quaid and he needs to follow orders.
Quaid gets a suite at the Hilton and retrieves a note from a hotel safe that he left for himself. It tells him to contact Melina at The Last Resort. Outside the hotel, a mutant taxi driver named Benny (Mel Johnson Jr.), persuades Quaid to let him take him to Venusville and The Last Resort, a bar and brothel. Quaid finds Melina, who strongly resembles the woman he requested at Rekall, but he can't remember her and she doesn't believe his story. She orders him to leave at gunpoint.
Quaid returns to the Hilton and is visited by Dr. Edgemar (Roy Brocksmith), the founder of ReKall, who Quaid saw in a Rekall ad on Earth. Edgemar tells Quaid that everything that has happened since his trip to Rekall is all in his mind. He says everything Quaid has experienced since falling unconscious at ReKall on planet Earth has been a dream due to a "schizoid embolism" and "acute neurological trauma". Quaid, disbelieving, holds him at gunpoint. Edgemar tells Quaid his entire experience matches the dreams he asked to be implanted.
Edgemar opens the hotel door and Lori enters. She pleads with Quaid to listen to Dr. Edgemar. Edgemar offers Doug a pill, "a symbol of his desire to return to reality." He says Quaid must take the pill voluntarily to escape his permanent dream state. If he does, he will fall asleep and then wake up at the memory implant facility on Earth. He tells Quaid that if he doesn't take the pill, he will end up lobotomized and his mind will be trapped in this alternate reality forever. Quaid seriously considers the offer, but before he can swallow the pill, he spots a drop of sweat on the nervous Dr. Edgemar's face. He thinks this confirms that he is experiencing reality and not a dream and immediately shoots and kills Edgemar. A team of men break suddenly break through the room's walls and capture Quaid.
Lori and Richter's men take the subdued Quaid to an elevator. When the elevator doors open, Melina opens fire with a sub-machine gun, killing all but Lori. Melina and Lori fight, but just as Lori is about to stab Melina with a knife, Quaid shoots the knife out of her hand. She looks up, telling he wouldn't hurt her because they're married. Seeing her reaching for a gun, Quaid shoots her dead, replying, "Consider that a divorce."
Richter and Helm chase Melina and Quaid. They flee the hotel where Benny is conveniently waiting for them. He takes them to Venusville and The Last Resort. They hide behind a secret panel. The rebels and Cohaagen's security forces engage in a firefight during which Helm and several of Richter's security forces are killed. Richter barely escapes and takes command of a platoon of reinforcements. Cohaagan calls Richter after hearing about the firefight and orders him to pull back. Richter and his men retreat and the entire neighborhood is sealed off and the oxygen circulation system and fans feeding the area are turned off.
Quaid is taken by the rebels to meet Kuato, the unknown leader of the rebellion. Kuato is psychic and can spot undercover Martian agents and extract information from them. They hope that Kuato can read Quaid's mind and find key information that will help them defeat Cohaagen and free Mars from his dictatorship. They take Quaid to see George (Marshall Bell), a high ranking rebel officer, before he can meet Kuato. They meet George in a private room, who opens his shirt to reveal that he is also Kuato, a conjoined, symbiotic creature with only a small head and arms. Kuato reads Quaid's mind and sees a vision of alien ruins, that have been rumored to lie underneath Mars. Cohaagen has kept their existence secret because it would convert the tribidium and make it worthless.
The rebel hideout is attacked by Cohaagen's forces who massacre the rebels. Quaid, Melina, Benny and George/Kuato flee. As they prepare to escape, Benny suddenly shoots and kills George/Kuato, revealing that he is a covert agent of Cohaagen. Before Kuato dies, he tells Quaid to start the reactor. Richter finishes Kuato off and takes Quaid and Melina to Cohaagen.
In his office, Cohaagen smugly explains to Quaid that the entire operation was a trap conceived by Hauser and Cohaagen. They devised a plan to trick Kuato by erasing Hauser's memory and implanting memories making him into Quaid so he could pass Kuato's psychic test. Quaid doesn't believe Cohaagen, but Cohaagen plays a recording made by Hauser before he became Quaid. Hauser, with Cohaagen at his side, congratulates Quaid for helping wipe out the rebels. Cohaagen orders that the oxygen supply to a large part of the Mars colony that aided the rebels be completely cut off.
Quaid and Melina are taken to a memory implant facility so that Hauser's memories and personality can be restored. Melina will be implanted with memories making her subservient. During the memory programming procedure, Quaid escapes from his chair, frees Melina, and kills the tech workers and all the guards. The two head down to the alien ruins. Quaid explains to Melina that Kuato helped him remember that the ruins are actually reactors that will create enough air for the entire planet, and would thus cause Cohaagen to lose control of Mars.
Quaid and Melina get to the ruins. They are attacked by Benny, who is driving a gigantic mining drilling machine. Quaid impales Benny with a power mining drill. They then find a way to the reactor, where a large platoon of soldiers, led by Richter, are waiting for them. Doug utilizes a hologram device to confuse the soldiers while he and Melina gun them all down. Richter boards a freight elevator that ascends to the ruins' control panel. Quaid jumps on and the two fight, ending with Richter having his arms ripped off and falling to his death.
Quaid makes it to the reactor control area, where Cohaagen is waiting for him; he has rigged the control facility to explode, and is just about to kill Quaid when he is shot and wounded by Melina. He activates the bomb, but Quaid throws it away before it detonates. The explosion rips a hole in the wall, causing depressurization. As Quaid and Melina hang on for dear life, Cohaagen is sucked into the atmosphere and lands in the Martian landscape, where he quickly dies from the lack of oxygen and the massive solar radiation. Quaid manages to turn the reactor on just before he and Melina are sucked into the atmosphere as well, but they are saved as the reactor releases a large amount of breathable air, which washes over the entire atmosphere. The people who were dying can now breathe freely again.
As Quaid and Melina gaze in astonishment at the Martian sky, which is now blue and clouded, Quaid wonders if he really is having a dream and if all of this is really happening in his head back on Earth at Rekall. Hearing this, Melina invites him to: "kiss me quick before you wake up." He and Melina kiss as the screen fades to white.