清朝末年,曾任黑旗水軍教頭兼民團總教練的廣東佛山武師黃飛鴻(李連杰)常在寶芝林教人練武,期望借此自強救國。然而目睹政府腐敗、洋人橫行的現實后,他逐漸領悟單憑武術不足以救民于水火,開始探索新的救國途徑。梅縣少年梁寬(元彪)在戲院結識黃飛鴻的戀人十三姨(關之琳)后,因誤會轉投武師嚴振東門下,與黃飛鴻對立。嚴振東勾結洋人假借"金山移民"之名,誘騙包括十三姨在內的大批婦女登上販奴船。梁寬認清真相后與黃飛鴻聯手,在碼頭展開激戰,最終擊潰嚴振東及其洋人同伙,救出全部被擄婦女。此役令黃飛鴻更深刻認識到民族危機的根源,他在痛心于民眾蒙昧的同時,決心以更開闊的方式踐行救國理想。