1917年,我国西南边境的刘家村。刘金喜(甄子丹 饰)和妻子阿玉(汤唯 饰)一起抚育两个儿子方正和晓天,日子平平且美好。直到某一天,两个不速之客打破了刘家村的安静,也摧毁着金喜一家的日子。这二人妄图掠夺村中的钱柜,被刚好在此的金喜撞见,一阵混乱打架,二匪稀里糊涂被金喜打死。由于其中一人是政府通缉的要犯,因此县官喜从天降,村里人也将金喜奉为大英雄。可是,这看似普普通通的盲打误杀却引起一个人的怀疑,他名叫徐百九(金城武 饰),是县衙的捕快。从蛛丝马迹上来看,二匪系死于武功高强者之手,徐百九由此留在村里,对金喜展开了连番的调查、调查与打听。