小庄(周润发饰)是一个职业杀手,因为在“工作”时被发现而遭雇主解雇,然而开枪时的火光意外令年轻夜总会歌手珍妮失明(叶蒨文饰)。为了帮助珍妮,小庄筹了一大笔钱来替她做恢复视力的眼角膜移植。小庄吸引了一个警探李鹰(李修贤饰)调查他的犯罪,最终两人因缘际会地遇上。因为见到小庄先前救过一名小女孩,再得知珍妮的手术后,李鹰明白到,逮捕这个杀手并不能达到正义。电影的高潮,是两人与三合会在废弃的教堂内激烈枪战,其导演手法远超出当时人所能想像的程度。此时小庄要李鹰答应,要是他有什么三长两短,一定要帮他把眼角膜捐给珍妮。
电影结尾,小庄被枪打瞎眼睛,重伤的珍妮在黑暗之中爬向他……
黑道老大被警方逮捕而免于一死,但李鹰却义无反顾在警网之中射杀了他。李鹰在小庄死后认识到,法律是没办法还给小庄这种人一个公义。他最后选择了自我的良知,违抗了维护世俗正义的法律规条。