At Rybachiy Naval Base, Submarine Squadron Commander Vladimir Markov (Lance Henriksen) meets with Dmitri Demi Zubov (Ed Harris) and tells him that he has been ordered to take command of submarine V67 (the first submarine that Zubov commanded early in his career), for one last cruise before both the submarine and Zubov retire from the fleet. The V67 is to be stripped and refitted for sale to the Chinese navy. Zubov is appalled that the Russians would allow their submarines to be possessed by an enemy. Markov explains that it's expensive to run a modern nuclear navy, and it also isn't all bad to let their enemies have access to their old and outdated equipment.
Zubov complains that he and his men have only been back for three weeks from their most recent cruise of 76 days and that there are numerous other well rested boats and crews available. Markov tells Zubov that the mission is to accommodate a request by a special projects group with the KGB, who say they need the most experienced commander and boat in the Russian navy to carry out their objective. It may also not be coincidental that the Americans are currently increasing their naval assets in the Pacific Ocean. Markov tells Zubov that they were unsuccessful at rounding up all of Zubov's crew from their vacations, so some replacements will necessarily be used.
Markov also tells Zubov that the command wanted to honor him by allowing him to take the V67 on it's last official cruise. Zubov seems very skeptical about that. While his father, Nicolai Zubov, was very well respected in the Russian submarine service, and a new academy is to be named for him, Zubov had a less distinguished career. He had some of the lowest grades ever for an officer at the academy and he was struggling with alcohol and drug use to deal with both physical and emotional difficulties resulting from an incident where he rammed the V67 into the back of another Russian submarine that killed 6 of his crew and induced epilepsy in him caused by a head injury.
Zubov asks Markov if he thinks they can ever be redeemed for the things they've done. Markov says, "In our dreams, maybe."
Zubov goes to a bachelor party being attended by his officers. One of them, Sasha (Jason Gray-Stanford), is due to be married. There are several big-breasted women and plenty of alcohol involved with the celebration. Zubov hands his executive officer, Alex Kozlov (William Fichtner), their orders. After reading them, Kozlov announces to the others that they will be shipping out at 1400 the next day.
That night, Zubov attends the wedding of Shasha and his fiance. The priest had agreed to get up in the middle of the night and do the ceremony. There were five people total in the church. Zubov tells Sasha he has two hours to consummate the marriage before he must report for duty and then tosses him some keys to a room.
Zubov goes home and kisses his daughter (Tessa Robinson) as she sleeps and apologizes to his wife Sophie for having to go back to sea. Sophie just remains silent, obviously disappointed.
At the dock where the V67 is located, Kozlov complains to Zubov about the age and poor condition of the boat, but nevertheless he goes about working to get everything ready.
Pavlov (Johnathon Schaech), the Russian political officer on board for the trip, introduces Zubov to Bruni (David Duchovny), a "technician" with the KGB, who will be going along, in addition to several other KGB men who will be helping him. They have a new piece of highly classified equipment that has been attached to the submarine and they need to test it. Bruni seems to recognize Zubov and says, "Nice to see you again, Captain." Zubov looks at him and acknowledges his comment, but obviously doesn't recognize Bruni.
The V67 was built to accommodate 86 people, so with the added KGB staff, it was very close quarters.
The payload includes a nuclear missile and a small yellow canary (used to monitor air quality for potentially lethal gases).
Pavlov gives Zubov two envelopes containing their respective orders. The envelopes are to be opened once they are at sea. Zubov puts them in a small wall safe in his stateroom. Pavlov also hands keys on neck chains to both Zubov and Kozlov. He also has one. They are the launch control keys for the nuclear missile.
As the V67 sails from its pier and past the office of Admiral Markov, Markov is watching out the window, outfitted in his dress uniform, and standing at attention. He brings a pistol up and points it at his temple, as though saluting, then pulls the trigger and kills himself.
As the sub continues towards the sea wall and on out to sea, Kozlov asks Zubov what the strange looking device attached to the outer hull is. Zubov tells Kozlov that device represents the shortest distance between Kozlov and his own command, that if he doesn't screw up this mission, he'll soon be in charge of a nuclear submarine. Markov told him as much.
Right after Zubov orders the boat to dive, he hears a loud clanging noise and aborts the dive. The sub resurfaces and the crew inspects the topside deck. Zubov thought someone might have been left out there and had made the noise. There was no one there, so they dive again.
Bavenod (Julian Adams), is the navigator on the boat. He's one of the replacement crew, telling Zubov that he came from the November, a nuclear sub and that he requested the transfer because he heard that crews on diesel boats were the best.
As Zubov heads for his stateroom, he passes the room where the KGB have their monitoring and control equipment. He jumps as a Rottweiller sticks it's head out of the door and growls and barks viciously. The dog is not real but is something imagined by Zubov.
Kozlov comes to see Zubov in his quarters and informs the captain that the replacement crew members all have no personnel records, just name, and rank. He notes that Bavenod is actually listed among the dead from an accident on another submarine. Kozlov thinks the technicians are KGB radical commandos and trained assassins. Zubov tells Kozlov that once they are deep in the water, they will do some drills, to make sure the replacements know what to do in case of an emergency.
The Sonar Operator (Jordan Bridges) detects another submarine, likely an American fast-attack, and Zubov orders evasive measures, including entering the thermocline and ejecting noise countermeasures.
Zubov finally opens the envelope containing his orders and has Kozlov read them to the crew over the intercom. The orders direct them to proceed to near where the American fleet is located and once there to test the new equipment.
The emergency drills begin and include a simulated hydrogen leak in battery cell #1; and flooding within a compartment. In real life, if salt water encounters the electrolytes in the batteries, it creates deadly chlorine gas. The drill doesn't go well, as Zubov calculates they would all have been killed.
Sonar detects a large surface contact and Bruni orders Zubov to put the boat directly underneath that ship. Kozlov is against that, not knowing what sort of ship that might be. Zubov orders the boat to approach from the rear, at periscope depth, so they can see what it is. It turns out to be a large Panamanian tanker. Bruni wants Zubov to put the sub under the tanker. Complicating matters is the fact that the boat's batteries have only 30-35 minutes time left before they need to be recharged on the surface. Zubov orders the sub to get behind and then under the tanker.
One of the KGB techs in the control room keeps asking for the sub to be moved closer and closer to the tanker, until it's only about 15 feet from it's keel, at risk of getting hit by the huge propellers. Finally, with battery power gone, they are forced to drop down and fall back, getting tossed around harshly by the propeller wash of the large ship.
Pavlov questions why Zubov drinks rum rather than vodka, which would be more patriotic. Zubov tells him that he drinks what he likes, not what is politically correct.
In response to why he and Zubov find themselves on the V67 at that particular time, when they are older than most of the men on board, Zubov jokingly explains that it's Admiral Markov's reprisal for him marrying Sophie. As they continue their discussion, Zubov experiences mental images of bad things happening and he suffers and epileptic seizure. When he regains his senses, Dr. Semak (Jason Beghe) is there, holding him and calming him. The doctor explains to Pavlov that the seizures happen only once or twice per year and the shitty government medication he takes doesn't help any.
When they are alone, Zubov tells Dr. Semak that he has dreams so clear he can't tell them from reality and at times he feels he's losing his mind. Pavlov confronts Kozlov about the captain's condition, as he's worried about potential consequences should the communist party find out. Kozlov simply responds that he's not going to tell them.
Sonar detects an American skipjack submarine in the area. Kozlov orders evasive maneuvers, which gets the attention of Bruni, who wants the sub to surface and the diesel engines started, which of course would advertise their existence and position to the skipjack. Captain Zubov is back on the bridge and Bruni tells him to surface and start the engines, but he won't tell him why. He just tells Zubov to have some faith. Not wanting trouble with the KGB, Zubov issues the orders.
After the diesel engines are started, Bruni orders his men to engage the Phantom. The noise level around the boat increases dramatically, as though the sub suddenly grew giant propellers that were churning in the water.
The American skipjack turns and falls in behind the V67. Zubov calls the crew to battle stations, loads a torpedo and opens the outer door, ready to fire. After maybe half a minute, Sonar announces that the skipjack returned to it's original course. Zubov looks at Bruni and asks him if the Phantom was some sort of cloaking device. They adjourn to the wardroom where Bruni explains that the Phantom is a system capable of recording the screw noises from any ship at sea and then re-broadcasting it so that any sub or ship monitoring them will think they are the type of ship whose sounds are being broadcast. Thus, the skipjack thought it was following a Panamanian tanker.
Captain Zubov plans to report on the success of the equipment test once they reach a pre-established reporting point. No one disagrees, however when it's just him, Kozlov, Dr. Semak and Pavlov remaining in the wardroom, a discussion ensues about what the KGB's options may be with regard to the boat and the Phantom. The potential exists for the KGB to take control of the boat and initiate an attack on the Americans, given that the Phantom would make it possible for them to become undetectable by either the Americans or their own Russian navy. Zubov thinks it would be good to have some sort of confirmation from squadron command that things are going as they planned.
Pavlov warns Zubov and the other two officers that they should be very careful about making accusations like that. Zubov tells Pavlov that sometimes in life you have to take sides, not necessarily knowing if you're on the right side or not.
As they reach the reporting point, Zubov orders the boat towards the surface so they can broadcast their position and confirm their orders. Bruni and one of his men don't want Zubov to do that, saying it would compromise their mission, which is to remain undetected. Pavlov supports their position. When Zubov threatens to arrest Bruni and Pavlov, one of Bruni's men draws a pistol and holds it to the captain's chest. He says if the order to dive the boat isn't given, he'll shoot Zubov. Kozlov orders the boat to dive.
Bruni then proclaims out loud that Captain Zubov abuses alcohol and medication and suffers from seizures due to a brain injury, the result of colliding with Vladimir Markov's boat in a training exercise, killing six sailors. He observes that Zubov also posted one of the lowest scores ever at the Officer's Training School and he kept himself from being expelled from the navy only through bribery and his father's reputation. Finally, he tells everyone that Zubov even tried killing himself, but failed at that too.
Bruni then gives the crew the choice of standing their posts in service to their country, or joining their captain in a court martial. Bruni gives Zubov one last chance to do as he's ordered. Zubov tells Bruni to go fuck himself and Bruni hits him. Bruni then separates the captain and those loyal to him and puts them in the forward part of the boat, but he puts Kozlov and some other men in the aft part of the boat.
In the forward area where Zubov and others are taken, the captain decides he needs to explain what happened to him earlier in his career. He tells his men that in order to defeat an adversary, you must drive the fight and be willing to do the unexpected. In a hunter-killer exercise, with him in command of the V67 and Markov in command of another sub, Zubov placed his sub in the wake of Markov's, knowing that Markov would never expect Zubov to fight in the blind. However, Zubov didn't expect that Markov would reverse his engines. The result was that the subs collided. Zubov's head hit the gyro and knocked him out. When he came to, there was a fire in the forward torpedo room. The men fighting the fire wouldn't come out and after Zubov was forced to seal them inside to save the ship, the men opened the outer hatches and let the sea rush in to extinguish the fire.
Because of who his father was, squadron command wouldn't allow Zubov's career to end as a result of the accident. They just sort of exiled him and Markov within the service to keep them from causing any further embarrassments.
Zubov tells his men that squadron command would never entrust the Phantom device with someone like him. He says there are only two reasons why a boat would go rogue. One was to defect and the other to start a war. He doubts that the KGB planned to defect.
Zubov gets on the boat's secure phone system and calls Kozlov and tells him he's sure the KGB has the launch codes and they need to find a way to disable the nuclear weapon. He asks Kozlov if Tyrtov (Sean Patrick Flanery) is with him, that Tyrtov knows the warhead better than anybody. Tyrtov is with Kozlov. If they can get him to the missile silo, then he could get to the warhead and rearrange the firing triggers. The missile would still launch, but would not result a nuclear explosion.
Kozlov also wants to get to the boat's weapons locker, so they arm themselves and re-take control of the boat.
Kozlov orders Tyrtov and Bavenod to into the crawl space below the deck. They crawl through narrow spaces until they meet up with Sasha (Jason Gray-Stanford) and another man. Kozlov orders Sasha to go with Tyrtov to get to the missile to reprogram the firing mechanism. Meanwhile, Kozlov and some other men head off to get to the weapons locker.
Bruni sets the sub on a course that Pavlov observes would put them extremely close to the American fleet in the vicinity of Midway Atoll. In response to the doctor's question about why Bruni is doing this, Zubov explains that the KGB is likely planning to use the Phantom to broadcast a recording of one of the Russian subs that had already been sold to the Chinese. The Americans will think that the missile was launched by the Chinese and retaliate against them.
One of the men with Zubov is a communications expert and he rigs up a device that can be ejected from the sub and once it surfaces, it would broadcast where they are and what they are doing. They do all they can to mask the noise of the ejection, but the capsule doesn't shoot out far enough from the sub and it smacks against the hull as it travels down the length of the boat. Bruni hears the noise and rushes forward to see what's going on. He learns nothing from Zubov or his men, but his interrogation is interrupted by word that a Russian sub is bearing down on them quickly. The transmitting device had worked well, and quickly.
The sub coming their way is the November, commanded by the most decorated hunter-killer in the fleet. The November is lining up to shoot at V76. Bruni has no choice but to temporarily return control of the boat to Zubov, because he doesn't have the ability to evade or fight the November.
Zubov orders all countermeasures released from the V76 and a decoy torpedo fired. The boat then executes an emergency dive and turn. One of the November's torpedos takes out the decoy, the other continues on and barely misses the conning tower of the V76. Zubov takes the boat deeper and they sit and wait, with the November directly above them. They are at crushing depth and some leaks start to show up.
When Zubov observes that the Russian government apparently doesn't approve of the KGB's plan, Bruni explains that what the politicians don't understand is that the Americans have first strike nuclear capability and if they behave like the Russians, they won't hesitate to use it. Zubov argues that the Americans may very well exhibit self-control and not execute a first strike.
Bruni explains to Zubov that the Americans have a program called Dark Star. It's an electro-magnetic pulse weapon that can disable any nuclear weapon, land, air or water-based, that the Russians may fire. With that capability, Bruni believes that the Americans could attack Russia at will and the Russians would have no counter-attack ability.
Zubov argues that the Americans would have cause not to attack Russia, being an empathic and humane society. Bruni isn't convinced.
Sasha and Trytov arrive at the missile silo and Trytov has a panic attack. Seems he's a claustrophobic submariner. Sasha decides he'll have to try and reprogram the firing mechanism, so he has Trytov coach him about what to do once he gets up to the warhead.
Koslov, Bavenod and another man disable one of Bruni's men and proceed to the weapons locker.
The November fires two torpedoes at V76. Zubov decides to execute the same technique that he did against Markov in their disastrous exercise and brings V76 into the wake of the November. He orders two torpedos rigged to be manually exploded, planning to disable the November rather than kill her. Zubov orders both torpedoes fired, followed by release of more countermeasures and an emergency ascent. The November also releases countermeasures and fires two more torpedoes. Zubov orders his first torpedo detonated. That knocks the two November "fish" off course. He then orders the second torpedo detonated within about 100 meters of the November, which causes her some damage and she is forced to surface.
Zubov demands to know the target Bruni has in mind. He says it's the Pacific Fleet at Midway. He believes that once the Chinese and Americans destroy each other, Russia will emerge on the right side of history.
Koslov and Bavenod arrive at the bridge with their weapons and order Bruni and his men to drop their weapons and stand down. Bruni then says, "Mr. Bavenod," prompting Bavenod to redirect his pistol at the neck of Koslov and the KGB retakes control of the boat.
Sasha has accessed the nuclear warhead and is working furiously to re-program the firing mechanism. One of Bruni's men sees the red warning light flashing on the control panel on the bridge, indicating someone's trying to get to the missile. Bruni and his right hand man rush to the silo and find Trytov by the door. Bruni grabs him and slits his throat with a knife, dropping him to the floor and leaving him to bleed out. Bruni then enters the access porthole to the missile and shines his flashlight around. Sasha is on the other side of the missile, out of sight, so Bruni doesn't see him and he backs out and locks the door.
Bruni returns to the bridge and collects the firing keys from Pavlov, Koslov, and Zubov. He then orders the missile fueled, firing coordinates entered, warhead activated, firing sequence started, and launch code entered. The launch code doesn't work, as Zubov had managed to compromise it earlier, using his key when he was alone at the control panel.
Bruni orders everyone around him to go the captain's cabin where he orders Zubov to open the safe and extract the ship's orders. The orders contain an encrypted message with an alternate launch code. Pavlov tells Zubov not to open the safe. Bruni shoots Pavlov in the stomach. As he's dying, Pavlov says, "sometimes you have to pick a side." Dr. Semak then tells Zubov not to open the safe and Bruni shoots him three times in the back.
Right then, Sonar advises that the November is firing more torpedoes at them. Koslov is next in line to be shot by Bruni, so to avoid that Zubov gets the orders from the safe and hands them to Bruni. Bruni orders the Phantom to be engaged. Back on the bridge, Bavenod reads the new launch code and Bruni enters it. He then orders the missile tube opened. As he's about to press the launch button, Zubov lunges and tries to stop him, but he's too late.
In the missile tube, Sasha sees the missile tube door open above and says, "oh, shit!" He then hurriedly completes the separation of two components of the firing mechanism, the last step to ensuring that a nuclear explosion won't occur. The missile launches, likely burning Sasha to death as it exits the boat.
As Bruni hurries over to the periscope to have a look around outside, Captain Zubov comes up behind him, taking hold of Bruni's head and smashing it hard against the periscope, then grabbing and holding Bruni's body in front of him as he uses a hand gun given to him by Koslov and shoots Bavenod dead. Other men throughout the boat take down the several other KGB agents on board.
Zubov orders the last remaining decoy torpedo fired and an emergency dive. It's too little, too late, as the November's torpedo explodes and seriously damages the V76, sending her to the bottom. As they sit there, Bruni decides to remind Captain Zubov about who he is. He was the boatwains mate on the V76 when they had the encounter with Markov. Zubov had ordered Bruni to seal the hatch to the forward battery, trapping the six men who later died. He said he didn't have the benefit of a father's reputation to save his career, but he claims that Zubov's being selected for this mission wasn't personal, that he was just a target of opportunity.
The yellow canary dies and the men are showing signs of breathing toxic fumes. They have some small filter masks they use to try and reduce the effects. Koslov advises Zubov that salt water is in the battery deck, so chlorine gas is being produced. Zubov orders Koslov to get in the egress suit and swim to the surface. It's their only chance for possible rescue and for someone to explain how all that happened was caused by mad men, and not the good men of his crew.
None of them have any idea if the missile hit it's target or if the warhead detonated.
The movie ends with Koslov escorting Zubov's wife and daughter to the dock, where some sailors are carrying orange body bags across the top of a submarine. Standing shoulder to shoulder on the deck of the sub are the men who were on board the V76. They are now ghosts. Zubov's daughter tells her mother how she wished her father would know how proud she is and the mother responds that he does.
The ghosts are apparently aware that either the Americans showed restraint or the missile and warhead didn't explode. Zubov looks upon his wife, daughter and Koslov with fondness and pride as they turn and walk away.