汉高帝六年,韩王韩信被刘邦徙封到太原郡的晋阳,想让他挡住匈奴的攻势。韩信觉得晋阳离匈奴太近,便请求把国都迁到马邑,刘邦准了这事儿。结果匈奴大军把马邑团团围住,城里粮尽援绝,韩信反复遣使求降。汉朝怕他有二心,干脆按兵不动。九月,马邑城破,韩信献城投降,这就把匈奴这股势力给送进了中原腹地。 刘邦接到消息后勃然大怒,亲自带兵北征。他在铜鞮县大败韩信的叛军,斩杀大将王喜。韩信逃进了匈奴地界,剩下的残兵都四散了。刘邦接着就去攻打盘踞在晋阳的赵国旧部。白土人曼丘臣和王黄赶紧拥立赵国的贵族赵利当赵王,把韩王信的旧部和匈奴骑兵凑到一块儿,打算来个大反攻。匈奴左右贤王也出动了一万多骑兵在广武到晋阳一线布防。汉军前后夹击却被拖进了泥潭,几次强攻都没攻下。 这时情报显示冒顿单于在代谷屯兵。娄敬侦察后觉得这是个圈套,想劝刘邦撤军。但刘邦觉得对方只是老弱病残,非要带着三十多万大军直扑代谷。娄敬被抓进了大牢。前锋刚过句注关,天气就突然变冷到了零下二十度,补给线全断了。刘邦被困在白登山里整整七天七夜,没水没粮没救兵。城里的箭都射完了,士兵只能拆门板、刮树皮充饥。 后来陈平给刘邦出了个主意:派人去贿赂单于的老婆阏氏。阏氏告诉单于说中国皇帝有神明保佑,加上赵利那边一直没来会师,单于怀疑他俩是一伙的。于是单于连夜让开了一个口子。大雾弥漫的时候,陈平让卫士背上双箭护送刘邦从缺口悄悄跑了出去。 脱险后刘邦带着主力往南撤,只留樊哙去平定代郡的残余势力。回到广武城后,刘邦把娄敬放了出来,还把之前十个不听劝的使者都砍了脑袋。他封娄敬为建信侯,赏给他二千户的食邑。这次惨败让刘邦清醒地认识到不能轻视匈奴人。为了自保,西汉开始了和亲、屯田和结盟这一套组合拳。