公元前201年,当初,匈奴畏惧秦朝,迁徙到北方十多年。待到秦朝灭亡,匈奴又逐渐往南渡过黄河。
匈奴单于头曼有太子叫冒顿。后来,头曼续有所宠爱的阏氏,又生了个小儿子,头曼便想把他立为太子。这时东胡部族强大,西域的月氏部族也很强盛。头曼于是派冒顿到月氏去当人质。不久,头曼加紧攻击月氏,月氏就想杀掉冒顿。冒顿即偷盗月氏人的好马骑上,逃回了匈奴。头曼由此认为冒顿强壮勇武,就让他统率万名骑兵。
冒顿便制作出响箭,训练部下骑射练习,使他们习惯于听从自己的号令。下令说:“看到我的响箭射出后不一齐发射的人,斩首!”冒顿随即用响箭自射他的好马,接着又射他的爱妻,左右的人凡有不敢跟着发射的,都被斩杀了。最后冒顿又拿响箭射头曼单于的好马,左右的骑兵也都跟着放箭射单于的马。由此冒顿知道这些兵士可以使用了,便在随同头曼出猎时,用响箭射头曼,他的部众即跟着响箭同射单于。最终杀死了头曼,并把他的后母和弟弟以及大臣中不听从调遣的人全部诛杀。冒顿自立为单于。
东胡听说冒顿弑父自立,便派出使者去告诉冒顿说:“想要得到头曼在位时拥有的千里马。”冒顿询问群臣,群臣都说:“那是匈奴的一匹宝马,不能给人!”冒顿道:“怎么能与人家为友好邻国却还要吝惜区区一匹马呀!”随即把这匹马送给了东胡。过了不久,东胡又派使者来对冒顿说:“想要得到单于的一位阏氏。”冒顿再询问左右近侍,侍臣都愤怒地说:“东胡这般无礼,竟然索求阏氏!请发兵攻打它!”冒顿道:“和人家是邻国,怎么能舍不得一个女子呢!”就选取自己所宠爱的阏氏送给了东胡。东胡王于是越来越骄横放纵。东胡与匈奴之间,有被丢弃的土地无人居住,方圆一千多里,双方各居其一边,设立屯戍守望的哨所。东胡再次派使者对冒顿说:“这些无人居住的荒地,我想得到它。”冒顿依旧召问群臣,群臣中有的说:“这是块荒地,给他们也可以,不给也行。”冒顿这时却勃然大怒道:“土地是国家的根本,怎么能够给人呢!”即将那些说可以给予的臣子都杀了。冒顿接着一跃上马,下令说:“国中有晚出发的人,斩首!”随即领兵去袭击东胡。东胡起初非常轻视冒顿,不设防备,冒顿因此就灭掉了东胡。
冒顿获胜而归,又向西攻击赶跑了月氏,向南兼并了黄河以南的娄烦、白羊二王,随即侵掠燕、代地区,全部重新收复了当年被蒙恬夺走的匈奴旧地,崐并夺取了汉朝边关原河套以南诸要塞到朝那县、肤施县一带的大片土地。这个时候,汉军正与项羽相持,中原地区被战争拖累得疲惫不堪,因此冒顿得以强大起来,拥有操弓射箭的兵士三十多万,威势镇服各国。
秋季,匈奴兵在马邑将韩王信重重包围。韩王信多次派使者出使匈奴,谋求和解。汉朝发兵救援,但又猜疑韩王信频繁私派使者是对汉室怀有二心,就派人去指责韩王信。韩王信害怕被杀,便在九月,举马邑城投降了匈奴。匈奴冒顿随即乘势领兵向南越过句注山,进攻太原,抵达晋阳。
公元前200年,高帝亲自领兵出征攻打韩王信,在铜县大败韩王信的军队,斩杀了他的部将王喜。韩王信逃往匈奴,他手下的将领白土县人曼丘臣、王黄等拥立赵王的后代赵利为王,重新收拢韩王信的散兵败卒,与韩王信及匈奴一起合谋攻击汉军。匈奴派左、右贤王统率一万多名骑兵,同王黄等驻扎在广武以南,到晋阳作战,汉军攻打他们,匈奴兵立即败逃,随后又聚集起来,汉军乘胜追击他们。这时恰好碰上天气酷寒,天下大雪,汉军士兵冻掉了手指的占十分之二三。
高帝驻居晋阳,听说冒顿单于驻居在代谷,便想要去攻打他,就派人去侦察匈奴。这时冒顿把他的精壮士兵、肥壮牛马都藏了起来,只让人看见老弱残兵和瘦小的牲畜。汉军派去的使者相继回来的有十批,都报告说匈奴可以攻打。高帝于是又派刘敬出使匈奴,尚未返回,汉军就全部出动兵力三十二万向北追击匈奴,越过了句注山。刘敬回来后报告说:“两国相攻,这本该炫耀显示自己的优势。但现在我到匈奴方面去,只看见瘦弱的牲畜和老弱的士兵,这必定是想要显露自己虚弱不堪,而埋伏奇兵以争取胜利。我认为匈奴不能攻打。”这时候,汉军业已出动,高帝大为恼火,骂刘敬说:“你这个齐国的混蛋伙,不过是靠着耍嘴皮子得到了一官半职,现在竟又来胡言乱语阻挠我的军队前进!”用刑具把刘敬拘禁到广武。
高帝先期抵达平城,军队尚未全部到来。冒顿便发出精兵四十万骑,把高帝围困在白登山达七天之久。汉军这时内外无法呼应救援,高帝于是就采用陈平的秘计,派使者暗中用重金贿赂冒顿的阏氏。阏氏随即便对冒顿说:“两个君主不应彼此困窘迫害。如今即使夺得了汉朝的土地,单于您也终究不能居住在那里。况且汉朝的君主也有神灵保护,望您明察!”冒顿与王黄、赵利约定好时间会师,但王黄、赵利的军队却迟迟不来,由此就怀疑他们与汉军有什么谋划,这才解开包围圈的一角。正好遇到天降大雾,汉军便派人在白登山与平城之间往来走动,匈奴人毫无察觉。陈平这时请求高帝命令士兵们用强弩搭上两支箭,箭朝外御敌,从解围的一角直冲出去。高帝脱出包围后,想要策马疾奔,太仆滕公夏侯婴却坚持慢慢地行走。到了平城时,汉的大队人马也赶到了,匈奴的骑兵便解围而去。汉军于是也收兵返回,命樊哙留下来平定代地。
高帝回到广武,赦免了刘敬,说道:“我不采用您的意见,因此被围困在平城。我已经把先前十多批使者都杀掉了!”接着就封给刘敬二千民户,爵位为关内侯,称作建信侯。高帝回师向南经过曲逆县,说道:“好壮观的县啊!我走遍天下,只见过洛阳和这里罢了。”就改封陈平为曲逆侯,享用全县民户的赋税收入。陈平跟随高帝南征北战,共六次进献妙计,每次都增加了封邑。