When Bobby Saint (James Carpinello) and Mickey Duka (Eddie Jemison) meet with European arms dealer Otto Krieg at the Tampa, Florida seaport, the FBI intervenes and Saint is killed while Duka is jailed. "Krieg", supposedly killed in the shootout, is actually undercover FBI agent and former U.S. Army Delta Force operator Frank Castle (Thomas Jane). Shortly thereafter, he retires from the FBI and attends a family reunion at his father's (Roy Scheider) oceanside home in Aguadilla Bay, Puerto Rico. Tampa crime boss Howard Saint (John Travolta) is enraged by the death of his son, and with right-hand man Quentin Glass (Will Patton) bribes the FBI for confidential information about "Krieg". Saint orders Castle murdered, and Saint's wife, Livia (Laura Harring), demands Castle's entire family be killed as well to "settle the score."
At the reunion, gunmen including Glass and John Saint (Carpinello), Bobby's identical twin, kill most of the extended family. Castle and his father kill several of the attackers before Castle's father is killed. Castle's wife and son try to escape, but John Saint runs over them with a truck, killing them. Castle, shot in the chest and blown off a pier in an explosion set by Glass, survives and is nursed back to health by a local fisherman, Candelaria (Veryl Jones). Once recovered, Castle goes to Tampa and takes refuge in an old tenement where three young outcasts — Dave (Ben Foster), Bumpo (John Pinette), and Joan (Rebecca Romijn) — live. Castle abducts Duka, who fearfully gives up information about the Saints — whom he, too, hates, and so willingly becomes Castle's mole. Castle starts exacting revenge on the police and FBI agents who have been bribed to close the investigation of his family's murder. In the process, he sabotages Saint's money-laundering business and severs Saint's partnership with Cuban mobsters the Toro Brothers, and starts tailing Livia and Glass, learning in the process that Glass is a closeted homosexual.
Saint, realizing Castle is alive, sends two assassins to kill him. Castle kills the first, guitar player Harry Heck (Mark Collie), by shooting a ballistic knife into Heck's throat. The second is "the Russian" (Kevin Nash), a behemoth who beats Castle in a brutal fight but is defeated when Castle throws boiling oil in his face, blinding him long enough for Castle to throw him down a staircase, breaking his neck. Moments later, Saint's men arrive, led by Glass and John Saint. Dave, Joan and Bumpo hide Frank and refuse to tell Glass where he is, despite Glass sadistically pulling out Dave's multiple facial piercings with a pair of pliers. They leave a man behind to kill Castle upon his return, but Castle kills him once Glass and the others are gone. With assistance from Mickey, Castle manipulates Howard Saint into believing Glass and Livia are having an affair. Saint, unaware Glass is gay, and believing Livia to be capable of cheating on him, kills them both personally, neither of them knowing why.
Castle attacks Saint's headquarters, the downtown Tampa nightclub Saints and Sinners, killing many of Saint's henchmen. He kills John Saint by having the crime boss' son hold an eight-pound, trip-wire activated grenade until his arm wearies and the grenade explodes. Castle wounds Howard Saint with a pistol when Saint attempts to shoot him in the parking lot of the nightclub. Castle then ties Saint to a slow-moving car, but not before revealing that Glass and Livia were not having an affair. As the car drags Saint through the lot, Castle sets off several hidden bombs; the resulting destruction and wreckage kills Saint and culminate in the shape of the Punisher's iconic skull. Later that night, Castle returns to his apartment and prepares to commit suicide, but after a brief vision of his wife, decides to continue his vigilante mission against others who in his mind deserve punishment. Before departing on his next mission, he leaves most of Saint's money for Bumpo, Joan and Dave. On the Sunshine Skyway Bridge, he vows, "Those who do evil to others — the killers, the rapists, psychos, sadists — will come to know me well. Frank Castle is dead. Call me the Punisher."