建元二年出陇西,经匈奴,被俘。在匈奴10年余,娶妻生子,但始终秉持汉节。后逃脱,西行至大宛,经康居,抵达大月氏,再至大夏。元朔六年(前123)春,张骞随卫青征匈奴右贤王部,立奇功,封博望侯。元狩二年(前121),与李广出右北平(今河北东北部)击匈奴左贤王部;张骞因迟误军期,使李广所率四千将士损失殆尽,当斩,用侯爵赎罪,得免为庶人。后张骞复劝武帝联合乌孙(在今伊犁河流域),武帝乃拜骞为中郎将,公元前119年率300人,牛羊金帛以万数,出使乌孙。张骞到乌孙,分遣副使往大宛、康居、月氏、大夏等旁国,此行也取得了很大的成果,西域各国也派使节回访长安.乌孙遣使送张骞归汉,并献马报谢。元鼎二年(前115),张骞还。翌年卒。
出使西域
当时汉匈交恶,汉朝正在准备进行一场抗击匈奴的战争。一个偶然的机会,汉武帝从一匈奴俘虏口中了解到,西域有个大月氏国家,其王被匈奴单于杀死,还把他的头颅做成酒器。月氏人忍受不了匈奴的奴役,便迁徙到天山北麓的伊犁河流域。后又受乌孙国的攻击,再向西南迁到妫水(今阿姆河)流域。月氏王想报杀父之仇,但苦于无人相助。武帝了解这些情况后,想联合大月氏,以「断匈右臂」。于是决定派使者出使大月氏。张骞以郎官身分应募,肩负出使月氏任务。
武帝建元二年(前138年),张骞奉命率领一百多人,从陇西(今甘肃临洮)出发。一个归顺的“胡人”、堂邑氏的家奴堂邑父,自愿充当张骞的向导和翻译。他们西行进入河西走廊。这一地区自月氏人西迁后,已完全为匈奴人所控制。正当张骞一行匆匆穿过河西走廊时,不幸碰上匈奴的骑兵队,全部被抓获。匈奴的右部诸王将立即把张骞等人押送到匈奴王庭(今内蒙古呼和浩特附近),见当时的军臣单于(老上单于之子)。
军臣单于得知张骞欲出使月氏后,对张骞说:“月氏在吾北,汉何以得往?使吾欲使越,汉肯听我乎?”这就是说,站在匈奴人的立场,无论如何也不容许汉使通过匈奴人地区,去出使月氏。就像汉朝不会让匈奴使者穿过汉区,到南方的越国去一样。张骞一行被扣留和软禁起来。
匈奴单于为软化、拉拢张骞,打消其出使月氏的念头,进行了种种威逼利诱,还给张骞娶了匈奴的女子为妻,生了孩子。但均未达到目的。他“不辱君命”、“持汉节不失”。即始终没有忘记汉武帝所交给自己的神圣使命,没有动摇为汉朝通使月氏的意志和决心。张骞等人在匈奴一直留居了十年之久。
至元光六年(前129年),敌人的监视渐渐有所松弛。一天,张骞趁匈奴人的不备,果断地离开妻儿,带领其随从,逃出了匈奴王庭。
这种逃亡是十分危险和艰难的。幸运的是,在匈奴的十年留居,使张骞等人详细了解了通往西域的道路,并学会了匈奴人的语言,他们穿上胡服,很难被匈奴人查获。因而他们较顺利地穿过了匈奴人的控制区。
但在留居匈奴期间,西域的形势已发生了变化。月氏的敌国乌孙,在匈奴支持和唆使下,西攻月氏。月氏人被迫又从伊犁河流域,继续西迁,进入咸海附近的妫水地区,征服大夏,在新的土地上另建家园。张骞大概了解到这一情况。他们经车师后没有向西北伊犁河流域进发,而是折向西南,进入焉耆,再溯塔里木河西行,过库车、疏勒等地,翻越葱岭,直达大宛(今乌兹别克斯坦费尔干纳盆地)。路上经过了数十日的跋涉。
这是一次极为艰苦的行军。大戈壁滩上,飞沙走石,热浪滚滚;葱岭高如屋脊,冰雪皑皑,寒风刺骨。沿途人烟稀少,水源奇缺。加之匆匆出逃,物资准备又不足。张骞一行,风餐露宿,备尝艰辛。干粮吃尽了,就靠善射的堂邑父射杀禽兽聊以充饥。不少随从或因饥渴倒毙途中,或葬身黄沙、冰窟,献出了生命。