After being defeated by Ip Man, Cheung Tin Chi (Max Zhang) lives a depressed life and stays low profile, moonlighting as a mercenary initially, before choosing to leave behind the world of martial arts, and to operate a grocery store. While on a delivery run, he runs into the opium addict Nana (Chrissie Chau), who is in debt to Tso Sai Kit (Kevin Cheng), and her friend Julia (Liu Yan), who are fleeing from Kit. He ends up fighting with Kit’s gang and defeats the whole gang single-handedly.
The police arrives and arrests everyone. Kit and his gang are released due to the police commissioner being corrupt, while Nana and Julia are released by name-dropping Julia’s brother, Fu, the owner of Gold Bar operating on Bar Street. Tin Chi is eventually released too.
Following the incident, Kit decides to seek out Tin Chi, with his whole gang setting his shop house on fire one night. Tin Chi barely escapes alive with his son, while being pursued by the gang and Sadi, a hired assassin (Tony Jaa). He is offered shelter at Fu’s home by Julia, and works at Gold Bar to pay his rental. Tin Chi forges a close friendship with Fu over their Wing Chun past.
Angered by the injuries to his son, Tin Chi retaliates and sets Kit’s opium den on fire. Kit’s sister, Kwan (Michelle Yeoh), the head of the syndicate wishing to transition to legal businesses, prevents Kit from taking revenge and visits Tin Chi at the Gold Bar to pay him to drop the matter, but Tin Chi refuses the money, impressing Kwan.
Kit, attempting to escape from the shadows of Kwan, decides to move into drug dealing with his friend, peddling drugs on Bar Street for Davidson (Dave Bautista), who uses his restaurant as a front for his drug business. Tin Chi tips off Kwan about the business, who requests for time to settle the business.
After finding Nana in a back alley, Kit and his gang kills Nana by forcing her to overdose on Heroin. Tin Chi and Fu fight their way to the syndicate’s headquarters, where they fight with Kit and Kwan. Kwan, attempting to placate them, cuts off Kit’s right arm. Fu exposes the drugs to the media.
In return, Davidson has corrupt police officers set up Fu on a false drug charge. After arresting him, they hand Fu over to Davidson to be killed. Subsequently, following the discovery that Davidson murdered Fu, Tin Chi gets himself into a fight with Davidson.
The police commissioner attempts to arrest Tin Chi but is in turn arrested by one of his men (Philip Keung) for corruption. Davidson attempts to escape in the ensuing chaos, but is killed by Sadi, who had been hired by Kwan before leaving Hong Kong with Kit.