唐朝末年,社会动荡不安,武林十大前辈约定每18年在赏善罚恶大会上选出一名武林义士。这次拟选出将独闯各恶宅杀尽十大恶人的移花宫主(张敏饰演)。宫主夫君燕南天(苗侨伟饰演)及其儿子小鱼儿(刘德华饰演)突至阻止,夫妻间因而反目。宫主以一招之差落败,立下18年后传一门人杀尽十恶的约盟。燕南天身受重伤,十恶谢其救命之恩,抚养小鱼儿成天下最恶之人。宫主收养花无缺(林青霞饰演)授其武功,因痛恨天下男人,将她男身打扮。18年后,十大恶人李大嘴(吴孟达饰演)屠娇娇(叶德娴饰演)等,命令小鱼儿等混入赏善罚恶大会以争盟主,他在城中邂逅花无缺。比武日临近,不少武林人遭暗害;小鱼儿等被江别鹤(张国柱饰演)江玉郎(吴镇宇饰演)父子揭穿身份,遭群雄追杀,一场武林风波旋即爆发。