Robert McCall (Denzel Washington) gets up early for his job at Home Mart. He is respected and well-liked among his co-workers. He has lunch with his friend Ralphie (Johnny Skourtis). Ralphie takes a bite of his sandwich and McCall hears a crunch. There's chips in his sandwich. McCall reminds Ralphie he's supposed to be dropping weight for his test to become a security guard.
Most nights, McCall goes to a diner where he takes a book. He is currently reading "The Old Man and the Sea". A young girl in the place (Chloe Grace Moretz) asks McCall if the man in the book has caught the fish. He says not yet. The girl finishes her pie and goes to hail a cab.
McCall's coworkers ask him what he used to do before working with them. He jokes that he was a Pip with Gladys Knight, doing a little dance for them.
McCall goes back to the diner that night and runs into the same girl. She notices he's reading a new book. A limo pulls up across from the diner. She then gets a call from her pimp, Slavi (David Meunier). He tells her she has a client, which is the man in the limo. The girl doesn't want to, since this man is a pig. The car door opens to reveal an obese man waiting for the girl. Reluctantly, she goes outside and joins him.
The next night, McCall finds the girl in the diner. She has a bruise on her face. He gives her a doughnut that he got from work. She sits with him at his table and introduces herself as Teri, although her real name is Alina. She hands McCall a CD that she recorded of herself singing. McCall leaves with her and they take a walk before a car pulls up to them. It is Slavi and his driver Tevi (Alex Veadov). Slavi gets out and slaps Alina. McCall takes a step forward until he sees that Tevi has a gun. Slavi walks over to McCall and hands him a card for his business to ask for other girls.
McCall visits the diner again another night and learns from the manager that Alina is in the ICU after being beaten badly. McCall goes there and sees another prostitute, Mandy (Haley Bennett), by Alina's side. Her face is even more bruised and messed up. Mandy walks by McCall, crying. She gets a cup of coffee but overflows the cup. McCall comforts her and asks about Alina. They ride the elevator, and Mandy tells him that Slavi hit Alina, and she hit him back, and was made an example of. Mandy says that Slavi also threw battery acid in a girl's face to make her an example as well. He has threatened other girls before.
McCall looks at the card that Slavi gave him. He goes to an area above a restaurant where Slavi and his men are meeting. McCall enters with an envelope containing $9,800 for Alina's freedom. At first, the goons laugh at McCall, though Slavi says that the money would be good to keep Alina for one month. McCall takes the money back and starts to walk out. He almost leaves but then decides to stay and lock the door. After carefully observing the men and whatever weapons they may be holding, he sets the timer on his watch. One of the men aims his gun at McCall, but he grabs the man's arm and causes him to shoot Slavi in the throat. He then jabs a shot glass into that man's eye. He stabs the third man, and then gets a corkscrew and repeatedly stabs Tevi until he sticks it under his chin and finishes him off. McCall goes to Slavi's side and watches him slowly die.
Following the murders, a Russian mobster named Teddy (Marton Csokas) arrives to Boston to seek out the killer. He teams up with a group of corrupt cops to gain leads.
At work, McCall notices Ralphie isn't in. He's told that Ralphie quit. McCall visits a restaurant that Ralphie's mother owns. Ralphie is helping her after a fire broke out, supposedly by accident.
Teddy is taken by one of the crooked cops, Frank Masters (David Harbour), to the workplace of a gangster named John Looney (Shawn Fitzgibbon), to continue his search for the killer. John insults Teddy, and all Russians in general. In response, Teddy hits John with an ashtray while Frank kills John's goons. Teddy continues to beat John's face in until the man goes unconscious.
The other two dirty cops, Remar (Mike O'Dea) and Pederson (James Wilcox), are eating at Ralphie's mother's restaurant. They extort her for protection money and claim that there will be another "accident" if the money isn't on time again next week. McCall finds them outside the restaurant and says he'd like to report a crime. They brush him off until he calls one of them on his person cell phone. McCall plays a video he took of them extorting a convenience store clerk during which they tell him they started the fire at the restaurant. McCall tells them they can either give the money back or the video will hit the news stations. The cops hold him at gunpoint, but McCall quickly beats them both. They comply and later return the money to Ralphie's mother.
McCall is seen playing baseball with his co-workers. Ralphie shows up in a security guard uniform, having passed his test.
A crook comes to Home Mart and holds the cashier Jenny (Anastasia Mousis) at gunpoint until she hands him the money in the register. McCall calmly comes over and gives him the money. The crook also demands Jenny's ring, which was her mother's. She tearfully hands it to him. McCall observes several details of the man, like his tattoos and his cap. He doesn't make a move since children enter the store with their mother. McCall instead follows the man outside and gets a look at the plates on his car. The cops inform them that this was part of a string of robberies from the same man. McCall then goes to get a sledgehammer off a rack. The next day, Jenny finds her ring in the register. McCall then returns the hammer to the rack after wiping it clean.
Teddy obtains some information about McCall, but what they can find about him shows a clean record with no trace that he has any involvement with Slavi's death. He and Frank, along with another villain, wait outside in a car while another guy enters the diner where McCall is eating. McCall knows the man is there for him. He asks him if they're waiting for anyone else. The man pulls out a gun and walks over to him. A truck pulls up in front of the diner, obscuring Teddy's view from his vehicle. McCall hits the man in the stomach with his book, and then kills him by slamming his head down on the table and breaking his neck. He then kills the lights by sticking a knife in an outlet. He walks out of the diner and snaps photos of Teddy and his men in their car.
The gangsters follow McCall home. He boils some honey to tend a wound sustained from the gunman. He manages to slip out before Teddy and his goons arrive. From another apartment, McCall watches them from cameras hidden inside his apartment. Teddy feels that he is watching.
McCall goes to the home of his friends Brian and Susan Plummer (Bill Pullman and Melissa Leo). They obviously have a history. McCall asks Susan for information about Teddy and the people he works for. She leaves to find what he asked for, and Brian tells McCall that it had been reported that he had died in an accident, but Susan believed he was still alive. When she returns, she tells McCall that the men he killed were part of the Russian mafia led by Vladimir Pushkin (Vladimir Kulich). Teddy, who is really named Nicolai, is the man Pushkin sends when something needs to be done. Remar and Pederson were on Pushkin's payroll, but were found dead a few days earlier with their testicles shot off and shoved into their mouths. Susan warns McCall that these men won't stop until he and everyone he cares about is dead.
McCall finds Frank and traps him in his car, which he has rigged with a hose from the tailpipe. He tells Frank he need so give McCall information or he'll leave him in the car. Frank finally relents and takes McCall to a warehouse where the Russians count their pallets full of money. McCall forcibly persuades the gangsters to surrender. He ties them up in a room with all the money for the cops to find. He frees all the workers and gives them a departing bonus from Pushkin's vast cash stash. He handcuffs Frank to a pole and tells him call in a report. When the police arrive, they find the gangsters and money, and arrest Frank. McCall goes to Frank's safety deposit box and retrieves his money, passport, and a USB stick containing more information detailing Pushkin's operations. McCall finds one of Pushkin's oil tankers and blows it and several trucks and a warehouse up.
Two of Teddy's men take Ralphie, Jenny and other Home Mart employees hostage, with the threat that they will kill them unless Frank meets Teddy. The villains track his cell phone and await his arrival. When he doesn't show at the meeting place near the blown up oil terminal, the henchmen in Home Mart prepare to execute one of McCall's coworkers. Music suddenly begins playing over the intercom. One of the mobsters takes Ralphie to find the source and is killed by McCall. The other hostage taker then follows in his footsteps and is also killed.
Teddy and his other hired hands come to Home Mart. They try to find McCall and are steadily killed as McCall stealthily moves about the darkened warehouse. He hangs one with barbed wire and stabs another one through the neck. He fights the biggest of the bad guys and is wounded until he finally kills him. Ralphie returns to help McCall and is shot in the leg. McCall lures one of the remaining bad guys to the break room. Ralphie turns the electricity back on as instructed, and the break room is destroyed when propane gas canisters in a microwave explode. Teddy is the last man looking for McCall when the propane explosion sets off the sprinklers. McCall uses a stud ramset gun and shoots Teddy with it several times until he walks up to him and shoots him in the throat, killing him.
Three days later, McCall shows up in Pushkin's bathroom while he's showering in his Moscow home. McCall turns the lights on and off repeatedly and runs the sink water until it overflows. Pushkin talks to him for a few minutes and then McCall disappears. Pushkin retrieves his weapon from by the sink. He calls for his guards when he suddenly sees that McCall has cut the electrical wires and left them exposed on the floor. Pushkin is standing in the water when it reaches the wire and he is electrocuted and killed. As McCall leaves Pushkin's estate, he passes numerous other guards who are already dead.
McCall returns to Boston. Bringing home groceries, he is approached by Alina, who is recovering from her injuries. She tells him she's gotten a real job and has started to do some reading. She thanks McCall for what he did, and she kisses him on the cheek before they bid each other farewell.
McCall is in the diner with his laptop. He receives a message asking for help. He simply replies, "Yes."