张骞答:“我要出使月氏,没想到中途匈奴人阻道。现在我逃出来了,希望国王派人送我去月氏。如果你这样做了,我回汉朝后告诉汉王,汉王定会用很多财物感谢你。”大宛国王满口答应,派人把张骞护送到康居,由康居转送大月氏,到大月氏以后,发现情况有变化。老国王被匈奴人杀害,立太子为王,征服了大夏。新国王认为,大月氏土地肥美,人民安居乐业,而且离汉朝太远,没有必要定要报复匈奴。
张骞没辙,又从大月氏回大夏。远朔元年(公元前128年),张骞取道昆仑山北麓,青海柴达木盆地的羌族居住区回国。由于羌族被匈奴控制,张骞在东归返回的途中,再次被匈奴抓获,后又趁匈奴内乱逃回长安,历尽千辛万苦,前后用了十三年时间。出发时带着随从一百人,返回时,只剩甘父一人同行,付出了很高的代价。为了表彰张骞的功绩,汉武帝封他为太中大夫,堂邑父为奉使君。
张骞出使西域,经历了许多国家,知道了西域的许多情况。他第一次以汉朝使者的身份,与西域的一些国家交往,沟通了汉朝与西域各国之间的联系。历史上称他的这次出使是“凿空(孔)”,意思是张骞打通了中原通往西域的孔道。这次出使虽然没有达到汉武帝要求的政治目的,但是通过他的旅行观察,却获得了有关西域各国极为丰富的地理知识。使生活在中原内地的人们了解到西域的实况,张骞把这些地理知识写成报告上奏汉武帝,后来司马迁即据此写成了(大宛列传),得以保存至今。张骞出使西域,激发了汉武帝“拓边”的雄心,发动了一系列抗击匈奴的战争。
元朔六年(公元前123年),由于张骞出使西域与匈奴作战有功,被汉武帝封为博望候。元狩元年(公元前122年),张骞又向汉武帝报告:“大臣大夏时,见邛竹杖,蜀布。问悦:‘安得此?’大夏国人悦:‘吾贾人往市之身毒。身毒在大夏东南可数千里,其俗士著,大与大夏同,而卑温暑热云。其人民乘象以战,其国临大水焉。’以骞度之,大夏去汉万二千里,居汉西南。今身毒国又居大夏东南数千里,有蜀物,此其去蜀不远矣。今使大夏,从羌中,险,羌人恶之;少北,则为匈奴所得;从蜀宜径,又元寇。”