1960年代的香港,因生母在阿飞旭仔(张国荣)长大成人过程中的缺失,他把自己优雅地比喻为“无根鸟”,对生命中遇到的每一个女人都表现得放荡不羁,售票员苏丽珍(张曼玉)和舞女咪咪(刘嘉玲)先后令他感受过温暖,可是她们也只能当当小情人。为摆脱沉重和无力感,旭仔抛下一切去南洋找寻生母。 暗恋过苏丽珍且目睹过她与旭仔情感一路变化的,曾是小巡警今在跑船的超仔(刘德华)在菲律宾又遇到旭仔,是缘分也是宿命,他参与、见证了阿飞命运被改写的过程。
清朝末年的香港,在上、中、西环有“镇三环”之称的帮办暗中勾结西环恶霸勾心虎,西环治安一时乌烟瘴气。警官马如龙(成龙)奉命接管西环后,迅速将勾心虎拘捕人狱,招来“镇三环”的怨恨。彼时内地革命风云翻涌,革命党人来港宣传,并计划营救被捕同志。为将革命党人一网打尽,清廷派遣密使联络镇三环,马如龙结识白影红、莹莹、珊珊等革命党人(张曼玉、关之琳、刘嘉玲等)后也被卷入斗争漩涡,而同时,一群四肢发达头脑简单的海盗正在伺机向马如龙报仇。