1917年,中国西南边境的刘家村。刘金喜(甄子丹饰)和妻子阿玉(汤唯饰)共同抚养个儿子方正和晓天,日子平淡且幸福。直到某一天,两个不速之客打破了刘家村的安静,也摧毁着金喜一家的生活。这二人希图洗劫村中的钱柜,被刚好在此的金喜撞见,一阵混乱打斗,二匪稀里懵懂被金喜打死。由于其中一人是政府通缉的要犯,因此县官事与愿违,村里人也将金喜奉为大英雄。但是,这看似普普统统的盲打误杀却惹起一团体的疑心,他名叫徐百九(金城武饰),是县衙的捕快。从蛛丝马迹下去看,二匪系死于武功高强者之手,徐百九由此留在村里,对金喜展开了连番的观察,调查与试探。