U.S. Army Captain and special operations veteran Benjamin L. Willard (Martin Sheen) has returned to Saigon where he drinks heavily and destroys his hotel room. Military intelligence officers Lt. General Corman (G. D. Spradlin) and Colonel Lucas (Harrison Ford) approach him with an assignment: Willard must follow the Nung River into the remote jungle, find rogue Special Forces Colonel Walter E. Kurtz (Marlon Brando) and kill him. Kurtz apparently went insane and now commands his own Montagnard troops inside neutral Cambodia.
Willard joins a Navy PBR commanded by George "Chief" Phillips (Albert Hall) and crewmen Lance Johnson (Sam Bottoms), Jay "Chef" Hicks (Frederic Forrest) and Tyrone "Mr. Clean" Miller (Laurence Fishburne). For escort they rendezvous with reckless Lieutenant Colonel Bill Kilgore (Robert Duvall), who commands a squadron of attack helicopters. Initially scoffing at them, Kilgore befriends Johnson as both are keen surfers. When Willard suggests the Viet Cong-filled coastal mouth of the Nung River, Kilgore accepts due to the surfing conditions there. Amid napalm strikes and Ride of the Valkyries playing over the chopper loudspeakers as they attack, the beach is taken and Kilgore orders others to surf it amid enemy fire. While Kilgore nostalgically regales everyone about a previous strike, Willard gathers his men to the PBR, which had been transported from a helicopter.
Willard sifts through files of Kurtz, learning he was a model officer and possible future general. Navigating upstream, the crew encounters a tiger and later visit a supply depot USO show featuring Playboy Playmates. The crew search a civilian sampan they come across, but Mr. Clean snaps and kills almost all on board, while Willard coldly shoots an injured survivor to prevent any delay of his mission. On reaching a US outpost at a bridge under constant attack, Willard is informed that a Captain Colby (Scott Glenn) was sent to find Kurtz, but is now missing. Lance and Chef are continually under the influence of drugs. Lance in particular smears his face with camouflage paint and becomes withdrawn.
The next day the boat is fired upon by an unseen enemy in the trees, killing Mr. Clean and turning Chief hostile toward Willard. Later, they are ambushed again, by Montagnard warriors and return fire. Chief is impaled with a spear and tries to pull Willard onto the spearhead before dying. Afterwards, Willard confides in the remaining Chef and Lance about his mission, and they reluctantly agree to continue upriver where they see the banks littered with bodies. Arriving at Kurtz's outpost, Willard takes Lance with him to the village, leaving Chef behind with orders to call an airstrike on the village if he does not return.
In the camp, the two men are met by a manic freelance photographer (Dennis Hopper), who explains that Kurtz's great philosophical skills inspire his people to follow him. As they proceed, they see bodies and severed heads scattered about the nearby temple that serves as Kurtz's living quarters, and encounter the missing Captain Colby among Kurtz's army. Willard is brought before Kurtz in the darkened temple, where Kurtz derides him as an errand boy. Meanwhile Chef calls in the airstrike but is kidnapped. Bound to a post, Willard screams helplessly as Kurtz drops Chef's severed head into his lap. After some time, Willard is released and given the freedom of the compound. Kurtz lectures him on his theories of war, humanity and civilization while praising the ruthlessness and dedication of the Viet Cong. He asks Willard to tell his son everything about him in the event of his death.
That night, as the villagers ceremonially slaughter a water buffalo, Willard enters Kurtz's chamber as Kurtz is making a recording, and attacks him with a machete. Lying mortally wounded on the ground, Kurtz whispers his final words "The horror ... the horror ..." before dying. Willard descends the stairs from Kurtz's chamber and drops his weapon. The villagers do likewise and allow Willard to take Lance by the hand and lead him to the boat. The two of them sail away as Kurtz's final words echo.