看良久,請高祖回營,獻計道:“匈奴起於塞外,未見大敵,常戰而勝之,必有輕我之意。不以怯示之,使以懈怠,以敵兵之勇,恐不能勝也。今彼聞陛下親至,必來挑畔。臣請自明日起,陛下三日不出,以顯我怯,再視之定計。”高祖從之。越日,冒頓聞漢帝親至,果使眾將來挑戰,漢軍守壁不出。匈奴兵將見漢軍持械立於壁上,便各持弓箭,盡往壁上來射,漢軍士兵皆持盾伏地,不敢張望,敵軍皆大笑。眾將見之甚怒,皆來大營請戰,高祖不許,遂下令道:“若有再言出戰者,皆斬!”眾將各自曬笑,互議道:“又如廣武拒楚也!”高祖聞之,並不在意。冒頓見漢兵不出,乃令左右賢王並谷蠡王引兵輪流搦戰。如此過了三日,當夜,陳平與高祖道:“臣觀敵軍已有驕橫之意,明日請陛下登高誘敵。敵見陛下,必來挑戰,我卻按兵不動。待敵士卒飢餓,氣勢衰竭,必將自退,我乘勢擊之,可克敵制勝。”高祖然之。
次日辰時,高祖引諸將登高觀陣。匈奴探子望見,急飛報冒頓,冒頓乃令右賢王董木合引左大將高阿朵、右大將敏何查及當戶十餘人往營前挑戰。漢營眾將望見,又欲請戰,卻見高祖下馬落坐,並無出戰之意,遂不敢言。董木合列成陣勢,令高阿朵領人叫罵,漢軍不懂胡人語言,不知所云,盡皆大笑。高阿朵大怒,引軍攻寨,卻被漢軍亂箭射回,只得列陣以待。到了午時,士兵飢倦,皆偃兵解甲,就地列坐,互爭食物飲水。陳平請擊敵兵,高祖許之,陳平遂喚灌嬰道:“汝引五百驍騎,出營經敵陣之西,往南而馳。敵若不動,汝亦不可動,且撤回營來;若覺敵動,當力戰之,我這裡使驅軍下來,必潰其軍。”灌嬰領喏,披掛上馬,開寨殺出。兵才過敵陣,高阿朵見了,急引令接戰,匈奴兵方坐進食,聞令紛紛起身,倉促來戰,多有不及被甲執械者,相互推擠,亂作一團。陳平望見,急謂眾將道:“可擊也!”於是三軍齊聲吶喊,如地動山搖一般,周勃居左,樊噲居右,引軍殺下山來。高阿朵正在指揮人馬迎戰灌嬰,聞得殺聲,急勒馬觀看之時,周勃當先殺到,手起一刀,將高阿朵揮為二段。董木合聞得殺聲,不知如何,急引兵往前,卻被敗軍衝動,陣角大亂。董木合方驅軍上陣,不防樊噲一馬殺到,舉刀便砍,董木合不及招架,閉目待亡。卻被敏何查持槊架開,救了董木合一命。董木合魂飛天外,急回馬便走。敏何查與樊噲交戰十餘合,被樊噲所殺。高祖在山頭望見漢軍大勝,乃仗劍躍馬,與夏候嬰等併力殺下山來。
冒頓正在寨中,聞殺聲已近,不知何事,急引軍出寨迎敵,但見漢軍蜂湧而至,勢不可擋,匈奴軍皆抱頭鼠竄,四下逃生。冒頓拍馬向前,正遇漢將灌嬰,兩個交戰。冒頓使一條金柄狼牙棒,重八十三斤,自出兵來,未遇敵手,今日與灌嬰大戰五十餘合,竟未分高下。眼見己軍已敗,漢軍大至,不敢戀戰,遂道:“今日不利,孤先退之,日後相遇,必與你一賭高下。”灌嬰道:“吾乃漢將軍灌嬰也,請記吾名,日後再會!”遂勒住戰馬,冒頓引敗軍往北退去。漢軍大勝一陣,追殺五十里,斬敵萬餘。高祖收兵,欲設宴慶功,陳平道:“未至慶功之時,今匈奴敗退,晉陽聞之喪膽,陛下可乘勢回兵取晉陽,如此三軍氣盛,下之必矣。”高祖然之,休息一日,乃令周勃、樊噲追擊冒頓,自引大軍回軍來攻晉陽。
卻說王黃、曼丘臣在城中聞漢軍大勝匈奴,遂互議道:“匈奴精銳,尚不能敵漢軍,你我久困,如何守得住晉陽,不如棄城亦投匈奴去罷。”丞相馮梁道:“我既與匈奴共謀圖漢,若投之,即歸其下,必為所輕。不棄且北守馬邑,與匈奴成犄角之勢,不失為一鎮諸候之名。”二將從之,即劫趙利,連夜往馬邑撤去。及高祖至時,晉陽已降陳武,陳武接高祖入城。灌嬰道:“王黃、趙利之亂,不過疥癬之礙,匈奴之亂方為心腹大患。今冒頓新敗,兵集燕、代,臣請一軍往略雲中,以削冒頓之勢。”高祖然其論,遂令灌嬰領引兵三萬,往攻雲中。匈奴太子稽粥守於武泉,聞灌嬰來攻,急合樓煩之眾來迎之。灌嬰望見胡兵旗幡不整,隊伍零亂,遂謂部下道:“此等烏合之眾,如何能當我軍之銳!”遂當先策馬,殺入敵陣,力斬胡騎左將軍。稽粥大敗,欲守武泉,灌嬰引軍猛攻,稽粥堅守不住,遂開北門而走,一路往投冒頓。灌嬰遂得武泉,定樓煩北六縣。
冒頓見太子,知雲中難保,謂眾將道:“孤自為匈奴王來,未有此敗!今銳氣已折,漢地不可急圖,當先回上谷,再作計較。”遂令韓王通道:“汝且引一軍斷後,孤再遣左賢王守於靈壽,右賢王守於行唐,漢兵來追,汝可當之。若力不能及,可投二位賢王。”韓王信領