1905年,香港中环。革命志士惨遭暗杀。知悉孙中山(张涵予饰)即将抵港,清廷遂派遣将军阎孝国(胡军饰)前来剿杀。他收买赌徒沈重阳(甄子丹饰)作密探。适逢商人李玉堂(王学圻饰)之子李重光(王柏杰饰)考学庆典,沈重阳见前妻月茹(范冰冰饰)与幼女已成他人家眷,黯然离去。为护孙,《中国日报》社长陈少白(梁家辉饰)邀戏班班主(任达华饰)出手,令其惨遭灭门,其女方红(李宇春饰)侥幸生还。陈少白被擒,与阎孝国相见,师生决裂。独子游行好友被擒等变故,使李玉堂投身革命,引得探长史密夫(曾志伟饰)查封报馆。其间,李玉堂帮车夫阿四(谢霆锋饰)与恋人阿纯(周韵饰)订婚。月茹夜会沈重阳,要他弃暗投明。打女方红,小贩王复明(巴特尔饰),乞丐刘郁白(黎明饰)等人也先后加入护孙行列。一场惊心动魄的全城追杀由此展开…….