元光五年(公元前130年)或元光六年(公元前129年),匈奴兴兵南下直指上谷(今河北省怀来县)。汉武帝任命卫青为车骑将军。汉武帝分派四路出击:车骑将军卫青出上谷,骑将军公孙敖从代郡(治代县,今山西大同、河北蔚县一带),轻车将军公孙贺从云中(今内蒙古托克托东北),骁骑将军李广从雁门出兵。四路将领各率一万骑兵,迎击匈奴。卫青首征,果敢冷静,深入险境,直捣匈奴祭天圣地龙城,并在龙城之战中,首虏700人,取得胜利。另外三路,两路失败,一路无功而还。汉武帝看到只有卫青胜利凯旋,封卫青为关内侯。龙城之战,是自汉初以来对战匈奴的首次胜利,为以后汉朝的进一步反击打下了良好的人心基础。元朔元年(公元前128年)秋,卫青为车骑将军出雁门,领三万骑兵,长驱而进斩首虏数千人。元朔二年(公元前127年),匈奴大举入侵上谷、渔阳,先攻破辽西,杀死辽西太守,又打败渔阳守将韩安国,劫掠百姓两千多人。武帝派李息从代郡出击,卫青率大军进攻匈奴盘踞的河南地(黄河河套地区),采用“迂回侧击”的战术,西绕到匈奴军的后方,迅速攻占高阙(今内蒙古杭锦后旗),切断了驻守河南地的匈奴白羊王、楼烦王同单于王庭的联系。而后,卫青又率精骑,飞兵南下,进到陇县西,形成了对白羊王、楼烦王的包围。汉军活捉敌兵数千人,夺取牲畜数百万之多,控制了河套地区。因这一带水草肥美,形势险要,武帝在此修筑朔方城,设置朔方郡、五原郡,从内地迁徙十万人到那里定居,还修复了秦时蒙恬所筑的边塞和沿河的防御工事。不但解除了匈奴骑兵对长安的直接威胁,还建立起了进一步反击匈奴的前方基地。此战,汉军全甲兵而还,卫青立有大功,被封为长平侯,食邑3800户。苏建、张次公以校尉从卫将军有功,封平陵侯、岸头侯。元朔五年(公元前124)春,朝廷命令车骑将军卫青率领三万骑兵,从高阙出兵;命令卫尉苏建做游击将军,左内史李沮当强弩将军,太仆公孙贺当骑将军,代国之相李蔡当轻车将军,他们都隶属车骑将军卫青,一同从朔方出兵;朝廷又命令大行李息、岸头侯张次公为将军,从右北平出兵。他们全都去攻打匈奴。匈奴右贤王正对着卫青等人的大兵,以为汉朝军队不能到达这里,便喝起酒来。晚上,汉军来到,包围了右贤王;右贤王大惊,连夜逃跑,独自同他的一个爱妾和几百个精壮的骑兵,急驰突围,向北而去。轻骑校尉郭成等追赶了几百里,没有追上。汉军俘虏右贤王的小王十余人,男女1.5万余人,牲畜达千百万头。汉武帝接到战报,派特使捧着印信,到军中拜卫青为大将军,加封食邑6000户(汉书8700户),所有将领归他指挥。