貞觀二十一年(公元645年)12月,李世民正式下詔討伐龜茲,拜右驍衛大將軍阿史那社爾為持節昆丘(此為昆侖山)道行軍大總管,統帥全軍。以左驍衛大將軍契宓何力,漢將金紫光祿大夫、行安西都護郭孝恪,司農卿、兵部侍郎、清河郡公楊弘禮等三人為副大總管,率左武衛將軍李海崖,沙州刺史蘇海政,伊州(治所在今新疆哈密)刺史韓威,右驍衛將軍曹繼叔,尚輦奉禦薛萬備等諸將俱為行軍總管,統各路漢軍步騎,並征發鐵勒十三部與突厥的騎兵,另有吐蕃、吐穀渾等諸部兵馬,軍容之盛,更在侯君集高昌戰役之上。
貞觀二十二年(公元646年)春,唐軍渡磧,正式行軍於域外。唐軍軍威赫赫,沿途之敵均懼怕而降,4月份西突厥葉護阿史那賀魯便率部投降,7月因為屢敗於唐軍而失勢的西突厥屈利啜亦率部投降。唐軍於是沿絲路北道發進,9月2日進至西州(治今新疆吐魯番東南)時擊破處月、處密等部的抵抗。至10月唐大軍兵從焉耆之西突然直趨龜茲北境,西突厥複立的焉耆王慌忙棄城而逃,阿史那社爾派輕騎追擊,擒殺焉耆王,並立其弟先那準為王,重新奪回了焉者。
眼見焉耆一觸即潰,龜茲國內大震,很多城內守將不戰而逃。社爾率部抵達西部磧口(今新疆輪台西),大軍屯於距龜茲王都伊邏盧(今新疆庫車)300裏處,命伊州刺史韓威率千餘騎為前鋒,右驍衛將軍曹繼叔為後軍次之,繼續西進。韓威率先鋒軍行至多褐城(今新疆庫車東80裏處),龜茲王訶黎布失畢、國相那利、大將羯獵顛率五萬大軍出城迎擊。韓威見敵人氣勢洶洶,因此率兵偽退誘敵。龜茲王見唐軍寡少,盡率大軍追擊。韓威一路上發揮了極高的戰術手腕,與龜茲軍若即若離,始終將龜茲大軍緊緊釣住。退至三十裏後終於與曹繼叔後軍會師,兩軍合擊,大破龜茲主力。龜茲王隻能率敗軍退守伊邏盧城。阿史那社爾立刻直搗伊邏盧城,龜茲王眼見不是對手輕騎而逃。阿史那社爾於是派安西都護郭孝恪留守伊邏盧王城,又令沙州剌史蘇海政、尚輦奉禦薛萬備率精騎追擊龜茲王,向西窮追六百餘裏,阿史那社爾率主力殿後。龜茲王在窮困之際,隻能據守撥換城(今新疆阿克蘇)。阿史那社爾麾大軍西進,將撥換城團團圍住,接連猛攻四十多天。閏12月初一,撥換城終被攻破,龜茲王及其大將羯獵顛等龜茲大臣全部被檎,隻有其國相那利單騎北逃。
龜茲國相不甘心失敗,於是投奔至西突厥處,不但引來了西突厥的大軍救援,他也利用其在龜茲國多年的威望征發了萬餘龜茲國兵助戰,突龜聯軍氣勢洶洶地殺奔龜茲王城伊邏盧城。而唐軍連戰皆捷卻使得郭孝恪喪失了警惕性,居然遲遲沒有進入龜茲城穩固唐軍的統治。當時有龜茲人勸告郭孝恪說:“那利是我國的國相,在龜茲國中素有名望,很得人心,如今逃亡在外,肯定會有所動作。而城中之人多有異誌,還請大人多多防備。”可是郭孝恪卻將此金玉良言拋之腦後,依然恣情歌舞為樂。當西突厥軍殺到之時郭孝恪才恍然大悟,連忙率部下千餘人進城防守。可是此時城內國相那利的黨徒卻將城門搶占,城中龜茲人與城外突龜聯軍夾攻郭孝恪。郭孝恪雖然犯下了大錯,可是其依然勇武無比。他自己為先鋒,率唐軍殺入龜茲城內。而城內龜茲人亦不退縮,占據有利地形的他們與唐軍死戰,而城外大軍則猛攻唐軍之後,城上流矢及鉞斧亂下,唐軍死傷慘重。郭孝恪血戰長街,一路殺至西門,身後唐軍僅剩數十人。而龜茲王城巨變早已被附近駐紮的韓威、曹繼叔兩軍知曉,於是盡起兵馬援救,援軍從西北角殺入,眼見就能救下郭孝恪等人,可是依然晚了一步,郭孝恪與其子郭待詔在十數倍的敵人圍攻之下同死於陣中,由此他成了第一位馬革裹屍的安西都護。郭孝恪死後唐軍並沒有全麵崩潰,其部將倉部郎中崔義超率因混戰失散的唐軍二百餘人依然在城中與敵力戰,堅持到了韓威、曹繼叔的援軍到來。此時局勢因援軍前來略有好轉,可是唐軍依然兵少,兩軍在城內以死相拚,白刃映血,短兵相接,甚至徒手肉搏以拳互毆,戰況異常慘烈。兩軍在龜茲王都血戰至第二天黎明,唐軍終於將敵人擊退。失敗後的那利並不甘心,於十天後又率兵前來攻打,卻被曹繼叔率休整後的唐軍殺得大敗,死傷八千餘眾。與此同時,聞之龜茲王都大變訊息的阿史那社爾率大軍回援,大破西突厥主力,西突厥乙毗射匱可汗隻能收兵退守碎葉川西,不敢再輕舉妄動。那利徹底沒了指望,隻能單騎而逃,但卻被龜茲降人所抓獲,執送唐軍。
唐軍血戰後再接再厲,鼓行而西,先後攻破大城五座,小城七百餘座,俘獲男女數萬口,遂立訶黎布失畢弟葉護為龜茲國王。唐將薛萬備率偏師至於闐,於闐王亦歸降。高昌、焉耆和龜茲等國相繼平定,西域震驚,西域諸國爭獻馱馬軍糧,慰問唐軍,阿史那社爾於是勒石紀功解俘奏凱而還。置龜茲、焉耆、疏勒、於闐四軍鎮,留漢兵鎮守。與此同時,又建置了四鎮都督府(注意此四鎮都督府不等於安西四鎮,不能混淆),由此唐軍西征龜茲的戰役獲得了完全的勝利。