武帝拜张骞为大中大夫,号堂邑父为奉使君。从前,张骞同行百人,或逃或死,大率无存,随归只有二人,惟多了一妻一子,总算是不虚此行,及定襄一役,张骞熟谙胡地,不绝水草,应得积功封侯。他却雄心未厌,又想冒险西行,再去一试,乃入朝献议道:“臣前在大夏时,见有邛竹杖蜀布,该国人谓买诸身毒。臣查身毒国,在大夏东南,风俗与大夏相似,独人民喜乘象出战,国濒大川。依臣窥测大夏去中国万二千里,身毒又在大夏东南数千里,该地有蜀物输入,定是离蜀不远。今衣出使大夏,北行必经过匈奴,不如从蜀西进,较为妥便,当不至有意外阻碍了。”武帝欣然依议,复令张骞持节赴蜀至犍为郡,分遣王然、于柏、始昌、吕越人等四路并出,一出駹,一出莋,一出邛,一出僰。駹、莋等部,本皆为西夷部落,归附汉朝。但自元朔四年以来,内外不通又多反侧,此次汉使假道,又被中阻,北路为氐駹所梗,南路为嶲及昆明所塞。昆明杂居夷种,不置君长,毫无纪律,见有外人入境,只知杀掠,不问谁何。汉使所赍财物,多被夺去,不得已改道前行,趋入滇越。滇越亦简称滇国,地有滇池,周围约三百里,因以为名。滇王当羌,为楚将军庄蹻后裔,庄蹻尝略定滇地,因楚为秦灭,留滇为王,后来传国数世,与中国隔绝多年,不通闻问。及见汉使趋入,当面问讯,才知汉朝地广民稠,乃好意款待汉使,代为觅道。嗣探得昆明作梗,无法疏通,乃回复汉使,返报张骞。张骞亦还白武帝。
武帝不免震怒,意衣往讨,特就上林凿通一池,号为昆明池,使士卒置筏池中,练习水战,预备西讨。一面复擢霍去病为骠骑将军,派他带领万骑,出击匈奴。霍去病由陇西出击,迭攻匈奴守砦,转战六日,逾焉支山,深入千余里,杀楼兰王,枭卢侯王,擒住浑邪王子及相国都尉,夺取休屠王祭天金人,斩获虏首八千九百余级,始奏凯还京。武帝赏霍去病功,加封食邑二千户。