20世纪40年代,内战快结束之际,台湾医生严泽坤(金城武 饰)频繁往返于台湾通往大陆的邮轮“太平轮”上,以便购买药品。为了维持家庭生计,表面上他风平浪静,内心却一直没有停止思念因战争被迫分离的恋人雅子(长泽雅美 饰),而他的弟弟严泽明(杨佑宁 饰)则一心想去大陆搞革命,苦难家庭风雨飘摇。严泽坤偶遇有过一面之缘的将军雷义方(黄晓明 饰)夫人(宋慧乔 饰),雷将军的通信兵佟大庆(佟大为 饰)念念不忘底层女性于真(章子怡 饰),还有士官(王千源 饰)、夫人(俞飞鸿 饰),众人相逢在最后一班去台湾的“太平轮”上,
七七事变前夕,华裔青年小亨德勒(彭于晏 饰)从美国远赴重洋,回到阔别十数年之久的北平从医。然而他真正的名字叫李天然,十三岁那年曾亲眼目睹师父一家遭师兄朱潜龙(廖凡 饰)和日本人根本一郎(泽田谦也 饰)灭门。侥幸逃生的天然被美国人亨德勒医生送往大洋彼岸,接受了极其严苛的训练,而今他怀着绝密的任务踏上故土。亨德勒父子租住神秘男子蓝青峰(姜文 饰)的宅子,蓝是当年辛亥革命的参与者,他与现为警察局长的朱潜龙过从甚密,却又以杀死李天然为筹码,暗中怂恿朱除掉根本一郎。复仇心切的李天然寻找到了仇人,而亨德勒医生则全力阻