公元前127年,匈奴再次入侵上谷和渔阳两郡,杀掳官民千余人,武帝闻报,大怒,决定更大规模地出击匈奴。卫青率四万骑兵从云中出塞向西迂回,在高阙(今内蒙古抗锦旗阴山西南长城口)与匈奴右贤王激战,然后直抵陇西,击败匈奴白羊王和楼烦王,俘获匈奴几千人,夺得牛羊一百多万头,收复贺兰山以东、狼山和大青山以南广大河套地区。漠南之役分为两个阶段。第一阶段度过黄河至高阙,获首二千三百级。第二阶段大军过古要塞榆溪,攀越梓岭,再次度过黄河,讨伐匈奴蒲泥王、符离王,斩获首级三千多级。漠南之战总斩首数达五千多级,获牲畜百余万,车辎不可计数。此战后匈奴白羊王和楼烦王在黄河以南的势力基本不复存在,汉帝国再度收复了以前秦朝所修建的朔方郡,黄河以南地区俱为汉帝国所控制。捷报传到长安,武帝大喜,专门派使者前去慰劳,并封卫青为长平侯,食邑三千八百户。漠南之役的规模虽然不是很大,战果也不是很丰硕,汉军很有可能没有遇到匈奴的真正主力,但漠南之役的地缘意义十分重大。收复了河南地以后,汉帝国的东线防区和西线防区完全贯通,形成了一个通畅的战略走廊。以前东、西个边郡各自为战的情形不复存在。从此之后,汉军的各路出击,都可以互为犄角,相互配合。更重要的是,河南地的收复使防线向北推进了一大步,抽掉了匈奴进犯中原的跳板,从而彻底消除了匈奴人对关中和长安的威胁。漢武帝隨後在河朔地區移民屯田,建立朔方郡,為將來對匈奴作戰打好了根據地。为纪念此战,汉武帝改年号为元朔。
公元前124年(元朔五年),匈奴右贤王因自己管辖的河南地被汉帝国占领而十分恼怒,他多次率兵侵扰朔方城。武帝于是决定大举反击。卫青率兵十万,分三路出塞攻击匈奴。:左路主力为卫青所部,约三万余骑从高阙出击;另有苏建、李沮、公孙贺、李蔡所部,从朔方出击,这几路皆受卫青节制。右路为李息、张次公率领,从右北平郡(今辽宁西北部、河北东北部)出击,目的是牵制左贤王部。卫青带三万骑兵日夜兼程,入塞六七百里以迅雷不及掩耳之势袭击了匈奴右贤王营地,右贤王带数百名骑兵逃走,其军大败。这次战役俘虏匈奴裨王(小王)十多人,男女一万五千多人,牛羊百万多头,是一次巨大的胜利。捷报传来,武帝大喜过望。大军还至塞上后,武帝遣使者持大将军印,到军中拜卫青为大将军,诸将皆归属其节制。
公元前123年(元朔六年)春,匈奴又侵入雁门、代郡、定襄等地。大将军卫青奉命从定襄郡出击,率公孙敖、公孙贺、赵信、苏建、李广、李沮等六将军以下十余万骑出击匈奴,进入茫茫沙漠,深入匈奴腹地“斩首数千级而还”。卫青收军回驻定襄,休养士马,准备再战。
同年夏天,卫青率六位将军再次从定襄出击,挥师北进,直入匈奴内百余里,“斩首虏万余人”。但由于轻敌,苏建、赵信率所部三千余骑遭遇匈奴单于所率主力,激战一日,汉军寡不敌众,死伤殆尽。赵信率八百余骑投降匈奴,苏建只身而还。后来单于听了赵信的建议,远走漠北。此役虽有一万数千首级的斩获,但损失了两支骑兵,且赵信投降匈奴。功过相抵,卫青没有得到赏赐。苏建被贬为庶人。