The film begins with a highly intoxicated Hong Kong police Inspector Chan Kwok Wing (Jackie Chan) drinking one whiskey after another at a bar. Later, he collapses in an alley, and is found by a stranger (Nicholas Tse).
The timeline then moves back a year, to show the heroics of Hong Kong 'Supercop' Inspector Chan, as he disguises himself as a news cameraman in order to subdue a man holding a woman hostage in Central News.
Soon after that incident, a group of rich, rebellious youths rob a bank. They explicitly ask a bank worker to call the police, and are confronted by the police outside the Legislative Council building. They play a sadistic game, in which they are awarded money for shooting police officers with assault rifles, before making their escape.
Inspector Chan and his squad are called to arrest the gang after their hideout is revealed. However, the hideout is rigged and the ten-man police squad fall into various traps one by one. Chan then finds his men in a large warehouse, suspended from the high ceiling by ropes. The gang challenges him to training regimes that are taught to policemen. Chan agrees in order to free his men. Chan comes out tops initially in the three duels, but due to the mental pressure, he eventually loses and is left with only his would-be brother in law to save. He tries in vain to save all his comrades before the explosives blow up the building.
Being the sole survivor of the incident, Chan takes a year-long leave from the police force, drinking heavily to drown his sorrows and guilt.
Present day. The stranger, who first featured at the start, brings him home. When Chan wakes up, the man identifies himself as PC 1667, Frank Cheng, his new partner. Frank tries various means to convince Chan to cancel his leave and take up the case but Chan refuses. However, he comes to his senses eventually by apprehending the same two youths that robbed him. At the police station, Frank tells Chan that he is Kwong's younger brother, which convinces Chan to relook into the case.
Frank and Chan convinces Sam Wong, a former colleague of Chan, to reveal a clue from the night of the robbery; a watch which he snatched from one of the robbers. Chan and Frank are tailed by the police as they go in search of the owner of the watch. Sam Wong was also arrested by the police to assist in the investigation. Sam Wong is shot dead by another gang member, Fire, before he manages to identify the robber (Sue). Before dying, Wong Sum confesses to Chan that he betrayed their plans to the gang before the police took action.
Fire and Sue both manage to escape the building, with Chan and Frank pursuing Fire. To distract Chan, Fire shoots at a bus driver, killing him instantly and rendering the bus full of schoolkids out of control. Chan quickly jumps onto the roof of the bus in an attempt to stop it. After the careening bus has caused a great deal of havoc, Chan finally manages to climb in and hit the brakes, halting it from falling into Victoria Harbour, while Frank rams a truck full of rubber ducks in front of the bus' path.
After the incident, Chan discovers that Frank is not really a policeman, and confronts him. Frank attempts to explain to Chan, but Chan refuses to buy the story. Regardless, they stay together to continue to track the gang leader, Joe. They are informed by Officer Sa Sa that the gang members all come from rich families and the gang leader is actually the son of the police chief.
Sue and Fire return to the gang's new hideout. Sue is badly wounded, after being shot by Frank earlier. Seeing her injury, Joe shoots and kills her. Joe's gang access Chan's police file on a computer, with Joe bent on taking revenge.
Joe then arranges to meet Chan's girlfriend, Ho Yee, in the police station. He wraps a time bomb around her neck before leaving. When Chan learns of the bomb he desperately tries to free her. Ho Yee cuts the wires, with no effect, leading the police to believe that it is a fake. But when the two get ready to leave, a small wire attached to Ho Yee's back pulls out the secondary trigger, causing the bomb to explode. Before she can escape, it explodes and some falling pipes land on her, knocking her into a coma. Unfortunately for Chan, he is charged with assisting the impersonation of an officer (Frank) and for acting as an officer while under suspension.
After Chan and Frank are taunted by Joe's gang, Sa Sa and her father, the jailer, releases both of them illegally. The two sneak out of the police station, with everyone deliberately ignoring their escape. Police Chief Wong even makes his handgun available to Chan and tells Chan to 'bring it back when you're done'. Chan, Frank, and Sa Sa then go to a computer cafe to find teens playing the game up until they complete the most recent level to find out the gang's next target - the Bank of Hong Kong, located in the New Wing of the Convention and Exhibition Centre.
A squad of police officers arrive, but this time Chan stops them from rushing in, assigning them the task of calmly escorting the public out of the building. Once the public are moved to safety, the gang members' parents are sent in, much to their surprise. One of the gang members, Max, is so ashamed of himself that he attempts to run down the escalators to his parents, only to be shot dead by Joe.
Afterwards, Chan and Frank run up to engage the three remaining gang members. Frank manages to shoot Fire in the leg with his own gun, disabling him. Chan chases another gang member, Tin Tin, into a Lego exhibition. When the exhibition hall is emptied, Chan reminds him that neither won the last time they fought. The two engage in hand-to-hand combat, with Chan defeating Tin Tin. Joe then chases Frank into the hall and shoots at him. In the crossfire, Tin Tin is shot in the chest.
Joe manages to chase Frank out of the room just moments before the Special Duties Unit of the police arrive. Tin Tin grabs a gun from the floor and points it at Chan's back. Chan, oblivious to what's happening behind him, calls out to the squad to bring in a medic for the Tin Tin. Contemplating what he has done and how Chan is helping him, Tin Tin decides not to shoot Chan.
Chan finds Joe on the roof of the Convention Centre. Having captured and tied up Frank, Joe threatens to throw him to his death. Joe challenges Chan to a race to assemble a semi-automatic pistol, a rematch of an earlier challenge, wagering Frank's life in the process. This time, Chan chambers the bullet first thus swiftly wins the game, much to Joe's disbelief. A number of policemen arrive on the roof, along with Joe's father, the police chief. Joe's father reprimands him, while Chan tells Joe that he knows that he doesn't hate cops, but he actually hates his father for berating him.
Due to what Chan and his father have said, Joe finally admits defeat and deliberately unloads the single bullet in his gun and aims the empty gun at Chan for the police to have a cause to kill Joe. Not knowing that Joe's gun is empty, a police sniper then fires a round at him, injuring Joe in the process. He weeps and again aims it at his father, causing the sniper to fire once more, killing him. Chan rushes to rescue Frank, and both of them fall off the building. They eventually land onto a fireman's inflated cushion.
In the hospital, Ho-Yee has recovered and prepares to leave. She is met by several policemen and nurses who persuade her to accept Chan's marriage proposal. At first, she tries to hide her facial scars from Chan, but eventually accepts the proposal to the crowd's applause. Meanwhile, Frank is led away by Officer Sa Sa. He leaves his jacket on a railing. When Chan looks at the jacket, he suddenly recalls meeting Frank before, and has a flashback to an event from years ago: A homeless man from the mainland arrives without much money, and his son is starving. He tries to steal some food for his son from a 7-Eleven store. While running across the road to escape from the shopkeeper and the police, he is knocked down by a truck and killed. Chan arrives at the scene and uses his jacket to cover the body of the boy's father. Chan then buys the boy a loaf of bread. He comforts him, saying that the best thing do is to try to forget the past and look forward to the future. He asks the boy for his name, to which the boy replies, "Frank Cheng".