公元前120年,匈奴以每路数万骑的兵力分别攻入定襄和右北平,大肆杀掠吏民。汉武帝为彻底消除匈奴之患,决定组织更大规模的反击战。公元前119年春,汉武帝命大将军卫青率前将军李广、左将军公孙贺、右将军赵食其、后将军曹襄,以骑兵5万为主力,由代郡出发,寻求左贤王部主力决战;命骠骑将军霍去病率骑兵5万从定襄出发,寻求单于主力决战。此外,还配属汉军编制外的“私负从马”4万匹,运输、掩护辎重的步兵娄十万,分别跟随两兵团后行动。
卫青兵团出长城后,从俘虏口中得知单于所在的位置,于是兵分两路:以李广、赵食其为右路,自己亲率主力为左路,向单于进攻。单于得知汉军兵出长城后,企图以逸待劳,歼灭远程奔波而来的汉军。卫青出长城1000余里,跨过大漠。在到达漠北之时,发现单于正陈后以待。于是,立即部署武刚车环绕为营,以防匈奴骑兵突袭。然后,派5000重骑兵,从正面向匈奴军队发动进攻,单于亦派出万骑迎战。双方激战至黄昏,突然刮起了大风,沙尘蔽天,战场顿时陷于一片昏暗之中。卫青趁机指挥主力由左、右两翼投入战斗,包围匈奴军队。单于见汉军兵力强盛,恐战败被俘,竟率亲卫壮骑数百人,弃军突围,逃向西北。匈奴军队失去主帅后,一片混乱,被汉军迅速击溃。至天亮时,汉军已前进200余里,到匈奴后勤基地窴颜山赵信城,心得匈奴之辎重、军需。汉军补充军粮后,烧毁余粮等物,凯旋回朝。此战,共歼灭匈奴军19000余人。右路李广、赵食其部,因迷失道路,无功而返。到漠南时,方与卫青主力会合。
霍去病部出代郡,北进2000余里,于漠北大败左贤王部,追击至狼居胥山及姑衍山单于庭,俘获屯头等三王,以及将军、相国、当户、都尉等高级官将83人,其他人员7000余人。
此战过后,匈奴赖以攻汉的战略基地丧失。虽然后来匈奴仍有扰边行动,但对汉王朝的直接威胁已经大大减少。