唐太宗征讨高句丽

背景

隋煬帝對高句麗的連年征戰使得隋國力銳減，民心喪失，這是隋朝滅亡的主要原因之一。因此，618年，唐高祖建立唐朝後，就努力與榮留王修好，雙方於622年交換戰俘。624年，榮留王接受了唐的年號。唐高祖冊封榮留王為遼東郡王、高句麗王。與此同時，唐冊封百濟武王為帶方郡王、百濟王，新羅真平王為樂浪郡王、新羅王。
626年，李世民在玄武門之變殺死了自己的長兄（皇太子李建成）和四弟（齊王李元吉），迫使唐高祖交出皇權並立他為新任皇太子。李世民隨後繼承皇位成為唐朝第二任皇帝唐太宗。在唐太宗在位的大多數時間裡，唐與高句麗大致維持著友好的關係。唐太宗試圖在朝鮮半島的三個政權之中保持主導地位。626年，唐太宗登基不久就派朱子奢到朝鮮譴責朝鮮三國之間的相互爭鬥。631年，在得到高句麗榮留王的同意後，唐太宗派特使到高句麗重新安葬陣亡的隋兵。但唐太宗對於高句麗還是沒有放棄征服策略。唐太宗李世民認為高句麗據有的「遼東」（當時的「遼東」的概念略同於漢朝四郡的範圍，即中國東北遼河以東地區以及朝鮮半島的北部）  為「舊中國之有」，而今「九瀛大定，唯此一隅」，決心將對高麗的征伐作為中國統一戰爭的最後部分。
641年，唐太宗派遣使者陳大德出訪高句麗。陳大德在高句麗訪問期間，遇到了許多在高句麗安頓了下來原隋朝兵將。回到長安後，陳大德將這一情況稟告了唐太宗。唐太宗於是萌生攻打高句麗的想法，但又很快打消了這一念頭，說是為免使山東人勞累。
642年（貞觀十六年），高句麗榮留王高建武和諸大臣合議打算誅殺暴力而兇殘的淵蓋蘇文。淵蓋蘇文聞訊後，設下陷阱邀請諸大臣觀看他的軍隊大閱兵，並設宴款待。在宴席上淵蓋蘇文殺死了榮留王的一百多位大臣，繼而進宮弒殺了榮留王，並立其侄子高藏為王。淵蓋蘇文自封自己為「大莫離支」，控制高句麗軍政大權進行攝政。唐朝得知這一消息後，亳州刺史裴莊曾建議攻打高句麗。但唐太宗卻說他對榮留王的去世表示悲哀，但以乘國喪攻打高句麗並不合適。不過，643年唐太宗又開始考慮對高句麗動武，並想下令先讓契丹和靺鞨偷襲高句麗。唐太宗的內兄長孫無忌對此表示反對，建議唐太宗先與高句麗假裝為好，後趁其不備攻之。唐太宗接受了他的建議，並冊封寶藏王為遼東郡王、高句麗王，授予「上柱國」的稱號。但背後，雙方都明白最終不免一戰。高句麗花費了巨大人工物力，在沿唐邊境修築了高句麗長城，自夫余城（今吉林四平市以西）至渤海，長千餘里，十六年修成。
643年（貞觀十七年），新羅善德女王傳書說百濟聯合高句麗攻打新羅，並請求唐援助。唐太宗於是派司農丞相里玄獎到高句麗下令高句麗和百濟停止攻打新羅。相里玄獎到達高句麗都城平壤時，淵蓋蘇文正在與新羅交戰。得知相里玄獎的到來，淵蓋蘇文返回到平壤會見他。不過，淵蓋蘇文拒絕了唐太宗的要求。相里玄獎回到長安後將此事稟告唐太宗後，唐太宗於是決意要攻打高句麗，大將李世勣也表示支持。儘管褚遂良反對，但唐太宗攻打高句麗的決心已定。

張儉征高句麗

新羅數次向唐太宗請援，644年（貞觀十八年），唐太宗派閻立德到洪州（今江西南昌）、饒州（今江西鄱陽）和江州（今江西九江）籌建400艘軍船，用以運輸糧草，並派遣營州都督張儉、守左宗衛率高履行等率領幽州（今北京）、營州（今遼寧朝陽）兩個都督府的兵馬以及忠於唐的契丹、奚和靺鞨僕從軍隊，讓其對高句麗進行探試性的攻擊。張儉領軍至遼西，因遼水正在汛期，水勢大漲，唐軍長期未能渡河。唐太宗將其召回洛陽詢問後，見其對高句麗的山川地形極為熟悉，於是仍任命他為行軍總管，兼領諸蕃部的騎兵，為大軍前鋒。

御駕親征高句麗

淵蓋蘇文馬上派特使到唐朝貢講和，以避免雙方戰爭的升級。不過唐太宗並沒有接受高句麗的朝貢，反倒將來使拘留起來，指控他們背叛榮留王，與弒君者同謀。644年冬，唐太宗帶著大多數官員和皇太子李治離開長安開始緩慢向唐與高句麗的邊境進發。房玄齡和李大亮留守都城長安。李世民先是到了洛陽並在那又作了幾個月的進一步準備。
大概在645年的新年，唐太宗下令以刑部尚書、鄖國公張亮為平壤道行軍大總管，左領軍常何、瀘州都督左難當為平壤道行軍副總管，冉仁德、劉英行、張文干、龐孝泰、程名振等人為總管，率江、淮、嶺、硤勁卒4萬3千人，乘500艘戰船（閻立德所造）從萊州出發，渡黃海向平壤進發。與此同時以英國公李世勣為遼東道行軍大總管，禮部尚書江夏王李道宗為遼東道行軍副總管，張士貴、張儉、執失思力、契苾何力、阿史那彌射、姜行本、麴智盛、吳黑闥、李元正為行軍總管隸之，率步騎6萬從陸地向遼東進軍。同時下詔令契丹酋長於勾折、奚酋長蘇支、新羅王金善德、百濟王扶餘義慈等諸國君長領兵助戰。
唐太宗對這場戰爭的勝利充滿信心。他認為隋煬帝之所以沒能戰勝高麗的原因是隋煬帝對自己的人民過於殘忍而高句麗則愛惜自己的人民。隋煬帝用要反叛的部隊來打高句麗團結一心的軍隊，因此是不可能取勝的。現在這一切都已得到改變：首先，這次戰爭是大國打小國；其次，這場戰爭是正義之師討伐叛逆之賊；第三，這場戰爭是組織有素的部隊攻打另一個混亂的部隊；第四，這場戰爭是精力充沛的部隊攻打另一個疲憊不堪的部隊；最後，這場戰爭是士氣高昂的部隊攻打另一個抱怨連天的部隊。因此唐這次攻打高句麗是勝券在握。
645年（貞觀十九年）春二月十二日，唐太宗率六軍和長孫無忌等文武重臣開始離開洛陽前往高句麗。宋國公蕭瑀被留下來看守洛陽。三月十七日到了定州（今河北保定）後，唐太宗讓太子李治監國，並留在那負責部隊的後勤任務。與李治一齊留守定州還有高士廉、劉洎、馬周、張行成、高季輔。三月二十四日李世民帶著長孫無忌、岑文本、楊師道、尉遲敬德、劉弘基、閻立德等大臣繼續前行。四月初六日到達幽州後由長孫無忌在城南進行誓師大會，並犒勞六軍後向遼東進發。十日岑文本在幽州病逝。

蓋牟城之戰

與此同時，李世勣和李道宗已先於李世民渡過遼河，645年夏四月二十六日，李世勣攻下蓋牟城（今遼寧撫順），獲得人口二萬，糧十萬石，唐太宗改稱其地為蓋州。在海路，張亮等已越過渤海登陸，五月初二日，麾下行軍總管程名振乘夜從西門攻下沙卑城（今遼寧大連），俘虜其男女八千人。為了震懾高句麗，張亮派先遣船隊到鴨綠江入海口，但並沒有按唐太宗最先要求進一步向平壤進發。

遼東城之戰

很快，李世勣和李道宗將隋煬帝曾久攻不下的遼東城（今遼寧遼陽）包圍。五月初八日高句麗派國內城和新城4萬步騎來支援遼東城，李道宗先是遣手下將領張君乂迎戰，不久張君乂不支向後退卻。李道宗見情勢緊急，親率騎兵4千衝鋒，一舉擊破高句麗援軍，斬首千餘級，張君乂作戰不利潰退被處決。
五月十日太宗度過遼河後，下令拆除橋樑，以堅定士卒決心。到遼東城外與李世勣會合後，將遼東城重重包圍。五月十七日行軍大總管、英國公李世勣率行軍總管張儉等人以及契丹、奚、霫等族僕從軍攻其南面。副大總管江夏郡王李道宗、第一軍總管虢國公張士貴等人，率軍攻其西面。前軍大總管夔國公劉弘基等，負責填壕溝。鄂國公尉遲敬德指揮軍樂隊奏樂助陣。高句麗為防禦唐軍的拋石車，在城樓上積木為戰樓，但並不能抵禦飛石的打擊，在拋石車和撞車的攻擊下，紛紛傾倒。此時大刮南風，李世勣下令發射火箭縱火焚其西南樓，風助火勢，延燒到城中。唐軍登城擊破城樓上的盾排兵後，攻下了遼東城。此役高句麗被燒死者萬餘人，俘虜士兵上萬，戶口四萬人，糧五十萬石。以其城為遼州。

白岩城之戰

拿下了遼東城後，唐軍進軍白岩城，由行軍大總管英國公李世勣總指揮。攻城時右衛大將軍李思摩中箭，太宗親自為他吸血療傷，以鼓勵士氣。白岩城靠山臨水，極難攻下。貞觀十九年六月丁酉（六月初一日，645年7月2日），白岩城城主孫代音請降，獲男女一萬人，勝兵二千四百，以其城置岩州，授孫代音為岩州刺史。

駐蹕山之戰

隨後李世民開始向安市城（今遼寧鞍山）進軍，六月二十日到達安市城下。二十一日高句麗北部耨薩高延壽、南部耨薩高惠真帥高麗、靺鞨兵十五萬援救安市，二十三日行軍大總管李世勣率虢國公張士貴等馬步軍十四總管領步騎一萬五千人於城西嶺立陣迎敵，趙國公長孫無忌則率牛進達等馬步軍二十六總管以及精兵一萬一千為奇兵，埋伏於山北。太宗親自帶領騎兵四千，潛趨敵營北山之上（駐蹕山，今遼寧省遼陽市西南的首山）。
高延壽、高惠真在與李世勣對陣時，長孫無忌、牛進達等率軍從狹谷衝出，衝擊高句麗軍後部，李世勣以步卒長槍一萬在前攻擊，太宗則領兵從山上衝擊，在三面夾擊下，十五萬高句麗軍崩潰，被斬首二萬餘級。唐軍左武衛將軍王君愕戰死。高延壽、高惠真衝出包圍，依山自保。
唐軍在駐驊山大破高句麗之後，高延壽、高惠真帥其餘眾三萬六千八百人請降，太宗任命耨薩以下酋長三千五百人為武官，遷到中國內地，餘眾三萬放還平壤，將反唐的靺鞨三千餘人，盡數坑殺。獲馬三萬疋、牛五萬頭、明光甲五千領，輜重無數。高句麗放棄後黃城及銀城，數百里無復人煙。太宗將此戰駕臨的山岡命名為駐蹕山，因此又稱為「駐蹕山之戰」，以兩萬五破十五萬，三面夾擊，堪稱經典。太宗又令將作監畫《破陣圖》，命中書侍郎許敬宗撰文勒石以紀其功。此戰中薛仁貴穿上異於眾人的白色衣甲，手持方天畫戟英勇作戰，自此得到太宗賞識，成為唐朝大將。

安市城之戰

在攻安市城前，唐太宗就得知安市城地勢難攻，安市城主楊萬春（中國及朝鮮史書中均失安市城城主的名字，朝鮮民間傳說此人名叫楊萬春）機智勇敢有一支強大的守城部隊。淵蓋蘇文攝政高句麗後，楊萬春拒絕接受淵蓋蘇文攝政。淵蓋蘇文曾發兵攻打安市城，但沒有成功，因此只好讓楊萬春繼續擔任其職務。唐太宗打算先攻打較為容易的建安城（今遼寧營口）。這樣拿下安市城南邊的建安城，安市城也就不攻而破。李世勣對此表示反對。他認為如果唐太宗先攻建安城，安市城就會切斷唐從遼東的供給線使唐陷入被動。於是唐太宗決定還是先圍攻安市城。
當唐太宗和李世勣的部隊到達安市城後，安市城的守城者見到唐太宗的旗幟就在城牆上大聲漫罵，李世民大怒。李世勣於是請求唐太宗拿下安市城後坑殺全城百姓。這使得安市城的守衛者更加奮力抵抗唐軍。就這樣李世勣一時間拿不下安市城。
一天，唐太宗從安市城中傳出殺雞宰豬的聲音。於是告訴李世勣說高句麗人可能在宴請守城部隊準備突襲。李世勣於是作好了高句麗會在晚上突襲的準備。事不出所料，安市城當晚真的對唐進行了突襲。不過早有防備的李世民，親自率兵擊退了高句麗的進攻。
與此同時，李道宗開始在安市城的東南構築一個用於進攻安市城的土山。為此，安市城也不斷加高東南邊的城牆。雙方這樣對峙了60天後，李道宗的土山已經高到可以看到安市城的裡面。李道宗和他的手下果毅都尉傅伏愛登上了土山頂。忽然，土山出現了倒塌，並倒在了安市城的城牆上。安市城的城牆也因此倒塌。傅伏愛這時卻擅離職守。高句麗趁亂發動進攻占領了土山，並使其成為安市城防守的武器。唐太宗一怒之下，公開處死了傅伏愛並下令對土山進行瘋狂攻擊。不過打了三天也沒拿下來。李道宗於是赤腳向李世民請罪。不過李世民寬恕了他。
隨著冬天的臨近，唐的供給也開始匱乏。645年九月十八癸未日（10月13日），唐太宗下令撤退。

撤退

李世民在從遼東撤退的時候，強迫遼東城和蓋牟城的居民遷往唐的地域內。據《資治通鑑》和《三國史記》記載，大約有7萬高句麗人被迫從遼東遷入唐。李世民在過遼河的時候，遇到了泥沼。長孫無忌、楊師道等動用了1萬人砍伐樹木填平泥沼後，唐的大部隊才通過遼河。一些士兵因此在寒冬等待時被凍死。此次戰爭，唐朝起兵十萬，馬萬匹，海潞七萬，共17萬人馬，未能全功。唐太宗很後悔發動了這場戰爭，說要是魏徵還活著，魏徵一定會勸阻他不要發動這場戰爭。魏徵643年病故後，唐太宗曾懷疑他與侯君集和杜正倫結黨，而毀掉了他自己親自撰寫的魏徵墓碑。懺悔後，李世民下令重建魏徵的墓碑並召見和獎賞了魏徵的遺孀和孩子。
冬十月十一日，唐軍到達營州（遼寧朝陽），以太牢（牛、羊、豬三牲全備）之禮祭奠戰死將士。二十一日李世民率軍進入臨渝關（即山海關），皇太子李治自定州前往臨渝關接駕。二十三日到達漢武台（在河北秦皇島北戴河聯峰山上），刻石紀功。十一月初七日到達幽州，初九犒勞全軍後正式班師回朝。十六日到達易州（河北易縣），二十二日到達定州（河北保定）。十二月，在定州到并州（今山西太原）的路上，李世民病癰，十二月十四日到達并州，在并州修養了幾個月後才於次年三月初七日回到長安。回到長安後，唐太宗由於身體不適，將一般政事交由了太子李治處理。
唐太宗在路上處決了一些作戰不利的將領，如平壤道行軍總管張文干，而走海路的平壤道行軍大總管張亮在戰前就不看好這次征討，怯懦畏戰，後見太宗決心已下，遂請求統帥海路大軍。以大總管之職，領4萬餘將士，只有麾下行軍總管程名振攻下沙卑城，俘虜8千人，又在建安城下，不立營壘，被敵軍偷襲，「亮素怯懦，無計策，但踞胡床，直視而無所言」，最後副將張金樹鳴鼓令士眾擊賊，才擊退敵軍。唐太宗對其極為不滿，因戰時不便處置，回到長安後，三月二十七日在有人（名常德玄）告發其要謀反時，將張亮處斬。
646年（貞觀二十年）閏三月二十七日，唐朝放棄遼州（遼東城）及岩州（白岩城）。唐與高句麗仍大致在遼水一線對峙。兩軍小規模戰鬥不斷，高句麗也對新羅發動報復，攻擊不止。
朝鮮18世紀以後的詩文、筆記小說稱唐太宗眼部受到了箭傷。受傷說法於史無據。

第二次戰爭

唐太宗撤退後，淵蓋蘇文更加不把唐放在眼裡，並時常偷襲唐的邊境。唐太宗多次要他停止對新羅的攻擊，但淵蓋蘇文對此毫不理睬。646年，寶藏王獻給唐太宗兩個美女，表示善意，唐太宗沒有接受。唐太宗以弓服賜給淵蓋蘇文，淵蓋蘇文接受，但不遣使者答謝，於是當年冬十月，唐太宗下詔削棄高句麗的朝貢，不再承認高句麗的政治地位，並計劃再次征討，考慮滅亡高句麗。唐的大臣指出雖然因為高句麗城池依山而建，地形對唐軍極為不利，因而導致貞觀十九年（645年）對高句麗的進攻不成功，但戰爭使高句麗進入饑荒。因此建議唐太宗小規模攻打高麗句使高句麗農民無法耕作加劇高句麗的饑荒。在這一政策的指引下，於是唐太宗再次發起對高句麗的戰爭。虞部員外郎唐遜被任為揚州道造船大使，與副手鍾離縣令強偉造海船一千艘。
647年（貞觀二十一年）三月初二日，唐太宗任命左武衛大將軍牛進達為青丘道行軍大總管，英國公李世勣為遼東道行軍大總管，率領李海岸、孫貳朗、鄭仁泰三個行軍總管討伐高句麗。牛進達和李海岸領一萬餘人從萊州渡海攻打遼東半島南部，李世勣和孫貳朗、鄭仁泰領配兵三千人和營州都督府所管轄兵馬，從陸路渡過遼河襲擊高句麗。五月二十五日李世勣攻克南蘇城、木底城，將其城郭燒毀後退兵。七月十一日牛進達所部一萬餘人攻克高句麗的石城，虜男女數百人。進軍至積利城下，高句麗出軍萬餘人拒戰，李海岸等擊破之，斬首二千級。唐軍在取得積利城之戰的勝利後，「乃皆還」，即退兵回國。
這兩支部隊以攻城略地，燒殺擄掠為目的。

第三次戰爭

647年（貞觀二十一年）八月初四日，唐太宗派「遣宋州刺史王波利、中郎將丘孝忠發江南十二州（宣、潤、常、蘇、湖、杭、越、台、婺、括、江、洪）工人造入海大船及艓船三百五十艘，將征高句麗」，當時唐軍剛剛結束青丘道行軍和遼東道行軍，而太宗就已經開始準備新的進攻了。十二月，高句麗再次派出使者（高寶藏第二子莫離支高任武）謝罪，唐太宗假意答應。
648年（貞觀二十二年）正月二十五日，唐太宗派薛萬徹和裴行方率軍3萬再次從萊州渡海入鴨綠江攻擊高句麗。四月十四日唐軍先鋒古神感在曷山與高句麗步騎五千人短兵相接，斬首八百餘人。夜裡再次設伏大敗要乘夜偷襲水軍船隊的高句麗軍萬餘人。六月二十七日薛萬徹舟師深入鴨綠江百餘里，派出一支奇兵偷襲大行城，至泊灼城（在今遼寧丹東以北的虎山）南四十里登陸紮營。泊灼城主所失孫（或所夫孫）率步騎萬餘人迎敵。薛萬徹遣右衛將軍裴行方領步卒，折衝尉羅文合為援軍繼進，自己領兵設伏突然出擊，大破高句麗軍，所失孫被斬殺。唐軍進兵圍泊灼城，高句麗派遣高文率烏骨（或馬骨）、安地諸城兵三萬餘人來援，分為二個軍陣。薛萬徹也分為兩軍對陣，一接觸之下即沖潰高句麗軍，唐軍俘獲大批高句麗戰俘，並攻克了泊汋城。九月初五日，唐軍退兵回到國內。薛萬徹在軍中與諸將不和，回國後裴行方告發其對皇帝不滿，被李世勣抨擊後除名，流放象州（廣西桂林）。後參與房遺愛謀反案被殺。

後續

太宗相信648年對高句麗的小規模襲擊已消弱了高句麗的力量，於是準備在649年率30萬部隊一舉滅亡高句麗。一些唐的官員指出發動這樣規模的戰爭需要有一年的糧食儲備，並需要建造更多的戰船。由於劍南道（今中國四川、雲南和重慶）一直沒有捲入從隋到唐的討高句麗戰爭，因此唐的官員建議在這一地區建造船隻。唐太宗對此表示同意並派強偉到劍南道籌建船隻，下令船造好後經長江、東海運到萊州。除此之外，越州（今浙江紹興），婺州（今浙江金華）和洪州也負責建造一些船隻。不過人們很快就意識到劍南道的人並不擅長建造船隻，因此劍南道最後只負責提供建船的木材。這些木材被運到潭州（今湖南長沙）造船。
649年，唐太宗去世，依照太宗的遺願攻打高句麗的計劃被取消。唐高宗繼位後，唐對高句麗和百濟又發動了一系列戰爭。660年唐與新羅的聯軍先滅了百濟。668年冬，唐和新羅的聯軍最終滅亡了高句麗。