小马哥(周润发饰演)与周英杰(梅艳芳饰演)在机场偶遇,因为一支口红而相互有了好感,本片故事由此情节下展开。
小马和志民(梁家辉饰演)是堂兄弟,两人是越南华侨。越南战争时期,小马与堂弟志民在香港做修理技工,正值越南局势动荡,他们为筹款帮助志民父亲松叔(石坚饰演)离开越南西贡来香港,不惜铤而走险,联络当地黑帮老大的女朋友周英杰,欲走私美金。不料遭丧邦(南燕饰演)的伏击,幸得周英杰相救。
周英杰与小马在相识的过程中,互相欣赏偷偷有了感情。志民此时也对周英杰表现出了好感,三人在越南西贡玩得很开心。很快,小马、志民和松叔回到了香港,他们被越南海关官员没收了一大笔钱,他们冒着生命危险去拿。幸亏得到周英杰暗中的帮助,他们才成功返回香港。和志民一起回港后,小马开了一家修车厂。与此同时,一直在留意周英杰的情况。
有一天,周英杰突然出现在他们面前,他们三个都欣喜若狂。然而,为了避免两兄弟一起爱一个女儿的尴尬局面,小马故意放纵自己,这让周英杰非常难过。周英杰的前男友何长青(时任三郎饰演)失踪很久了,后来突然出现。得知小马、志民和周英杰的关系后,何长青想杀他们,却误杀了松叔,逼他们离开香港。志民知道周英杰内心的爱人是小马,便想尽办法撮合他们飞走。然而,周英杰认为这都是他自己的错,决定和何长青绝交。
何长青为了把在越南的产业转移到香港,和周英杰一起回到越南西贡。为了找到周英杰,小马冒着生命危险带着志民来到越南西贡。志民在与周英杰交谈时与越南士兵发生冲突,下落不明。小马误以为志民是因为周英杰而死,一怒之下和周英杰分手。幸存重伤的志民向小马说明真相后,小马又爱又恨地去找何长青。
此时,在与何长青的交易中,丧邦与何长青双方发生了交火,,周英杰带上定时炸弹准备炸死何长青。她想和何长青死在一起,但是何长青发现了。混乱中,周英杰身受重伤,何长青也被丧邦所杀。最后,小马和志民带着重伤的周英杰逃到机场,离开了越南西贡。夕阳下,周英杰死在小马的怀里。梅艳芳的经典歌曲《夕阳之歌》就成了这部电影的主题曲。