汉初的和亲政策是在匈强汉弱的形势下被迫实行的,虽然出嫁汉家公主,并赠送大量财物,但匈奴并没有完全停止对西汉边境的侵扰。
汉武帝即位时,西汉王朝经过六十多年的休养生息,经济繁荣,国力强盛,他决定对匈奴实行反击,于公元前133年开始对匈奴进行战争。
公元前127年,匈奴集结大量兵力,进攻上谷、渔阳。武帝派卫青率大军进攻久为匈奴盘踞的河南地(黄河河套地区)。这是西汉对匈奴的第一次大战役。卫青率领四万大军从云中出发,采用“迂回侧击”的战术,西绕到匈奴军的后方,迅速攻占高阙(今内蒙古杭锦后旗),切断了驻守河南地的匈奴白羊王、楼烦王同单于王庭的联系。然后,卫青又率精骑,飞兵南下,进到陇县西,形成了对白羊王、楼烦王的包围。匈奴白羊王、楼烦王见势不好,仓惶率兵逃走。汉军活捉敌兵数千人,夺取牲畜一百多万头,完全控制了河套地区。
由于这一带水草肥美,形势险要,汉武帝在此修筑朔方城(今内蒙古杭锦旗西北),设置朔方郡、五原郡,从内地迁徙十万人到那里定居,还修复了秦时蒙恬所筑的边塞和沿河的防御工事。这样,不但解除了匈奴骑兵对长安的直接威胁,也建立起了进一步反击匈奴的前方基地。
公元前121年,武帝又命大将霍去病率数万骑自陇西出兵,过焉支山,西入匈奴境内千里。同年夏,霍去病复由北地(治所在今甘肃庆阳西北)出击,过居延海(在今内蒙古额济纳旗北境),南下祁连山。匈奴浑邪王杀休屠王,率四万多人归汉。汉朝夺得二王居地河西地区,设酒泉、武威(今甘肃民勤东北)、张掖、敦煌四郡,隔断了匈奴与羌人的联系,又为汉通西域提供了重要通道。
公元前119年,匈奴各以数万骑兵入右北平(治所在今辽宁凌源西南)和定襄郡(治所在今蒙古和林格尔西北)。汉武帝命卫青出定襄,霍去病出代郡,各率骑兵五万,步兵及辎重部队数十万,大举反击。卫青大败单于军,单于率残部向西北溃逃,汉军北至阗颜山赵信城而还。霍去病出代郡二千多里,大破左贤王军,临翰海(今呼伦贝尔湖)而还。从此,匈奴远徙漠北,“漠南无王庭”。
汉朝东自朔方,西至令居(今甘肃永登),以60万吏卒屯田,进行开发,保障了河西地区的安全。