唐朝第二代皇帝唐太宗李世民的时候,为援助处于高句丽和百济围困中的新罗(《新唐书》:“(百济)与新罗联合伐高句丽,取四十余城。发兵守之,又谋取棠项城,绝贡道”,新罗告急)并统一被高句丽据有的辽东地区(当时的“辽东”的概念略同于汉朝四郡的范围,即中国东北辽河以东地区以及朝鲜半岛的北部),唐太宗征讨高句丽,放话给薛延陀:我们父子都要去打高句丽,长安空虚,你要是不怕只管放马过来!薛延陀当时就吓得气短了一截(《旧唐书》载后来高句丽用厚利诱惑薛延陀叛唐,但是“夷男气慑不敢动”)。
贞观十九年(645年),唐军向辽东进军。唐太宗在路上对手下人说,四方基本安定了,就剩下这一块地方了,趁着我还没死,良将们还有精力,一定要解决掉。
夏季,徐世绩暗渡陈仓,突然出现在辽东城下,高句丽士兵大骇。营州都督张俭和优秀将领李道宗也率兵进入辽东,击败高句丽兵,斩首数千。四月,唐军攻破高句丽盖牟城,俘虏两万多人,缴获粮食十多万石。五月,另一路唐军从山东渡海攻破高句丽卑沙城,俘虏八千人。上百年来中国军队第一次得以在鸭绿江边阅兵。
不久,李绩和李道宗所部进逼辽东城下。高句丽军数万来援。有人建议说高句丽军多唐军少,应该坚守。可是李道宗说高句丽人仗着人多以为我们不敢拿他们怎么样,我们就是要攻击他们,杀杀他们的锐气。李绩说我们被派来就是负责替皇上扫马路的。马路不干净,我们怎么能躲呢。
于是唐军处于劣势却猛烈出击,高句丽兵始料不及,被冲乱阵型大败而归。唐太宗大军兵到后,把辽东围得水泄不通,日夜攻打。乘着刮南风的机会,唐太宗指挥士兵点燃城池西南楼,顺风放火。高句丽军抵挡不住了,辽东陷落。唐军杀高句丽兵一万多人,俘虏一万多人,此外还有百姓四万多人。
攻克辽东后,唐军继续向白岩城进发。乌骨城派兵一万支援,被唐军击退(此战唐军只用了800人)。六月,白岩城不战而降。唐军继续向安市进发。高句丽将领高延寿等人率领靺鞨、高句丽兵十五万来救援,被击败。高延寿向唐军乞降,来到唐军军营,一进门就跪下,挪动膝盖向前,拜伏在地。(《资治通鉴》上说“延寿、惠真帅其众三万六千八百人请降,入军门,膝行而前,拜伏请命。”)唐太宗对他们说:“东夷少年,跳梁海曲……自今复敢与天子战乎?”高延寿等人“皆伏地不能对”。唐太宗将降军中的高句丽军官、酋长三千余人虏往中原,其余高句丽人悉数释放。
安市城小而坚,在城主杨万春的抵抗下,唐军围攻数月不克。长孙无忌以为:‘天子亲征,异于诸将,不可乘危徼幸。今建安、新城之虏,众犹十万,若向乌骨,皆蹑吾后,不如先破安市,取建安,然后长驱而进,此万全之策也。’”)而这种方式过去一直是唐军克敌制胜的法宝。最终唐太宗决定暂时停止这次出征。9月,唐军班师。这次征伐高句丽,攻克玄菟、横山、盖牟、磨米、辽东、白岩、卑沙、麦谷、银山、后黄十城,迁徙辽、盖、岩三州户口入中国七万人。新城、建安、驻跸三大战,斩首四万余级。在唐军,战士阵亡的约2000人,损失最大是战马,损失了七八成。
此战虽重创高句丽,却未能灭亡高句丽。因此,唐太宗认为这战属于战败了,痛心地说:如果魏征还活着,肯定不会让我进行这次远征。但这战的意义还是比较重大的。这是自三国时期毋丘俭攻破高句丽屠王城以来上百年中国军队第一次真正战胜高句丽人,收复了今天辽宁一带很多南北朝时期被高句丽夺取的土地,为今后唐朝彻底征服高句丽打下了坚实的基础。
贞观二十二年(648年),倒是有个印度的小插曲。王玄策作为唐朝的使者去印度。中天竺大臣那伏帝阿罗那顺篡位,劫持唐使。王玄策只身逃到吐蕃,借来吐蕃军和尼泊尔军向印度进发。连战三天,印度军大败。唐军斩首三千余级,水中淹死印度兵约万人。阿罗那顺弃城逃跑,副使蒋师仁追上并俘虏之。此外虏男女一万二千人,牛马三万余匹。