1917年,中國西南邊陲的劉家村。劉金喜(甄子丹 飾)和妻子阿玉(湯唯 飾)共同撫養兩個兒子方正和曉天,日子平淡且幸福。直到某一天,兩個不速之客打破了劉家村的平靜,也摧毀著金喜一家的生活。這二人企圖洗劫村中的錢櫃,被剛好在此的金喜撞見,一陣混亂打鬥,二匪稀里糊塗被金喜打死。由於其中一人是政府通緝的要犯,因此縣官大喜過望,村里人也將金喜奉為大英雄。但是,這看似普普通通的盲打誤殺卻引起一個人的懷疑,他名叫徐百九(金城武 飾),是縣衙的捕快。從蛛絲馬跡上來看,二匪系死於武功高強人之手,徐百九由此留在村里,對金喜展開了連番的觀察、調查與試探。
在這一過程中,金喜神秘的真實身份漸漸浮出水面,而劉家村也面臨著一場空前的危機……