颉利俱利薛沙多弥可汗拔灼继位后,就发兵南下,骚扰黄河以南(即河套地区)了。这里距离唐都长安很近,位置非常重要,一旦薛延陀在此地站稳脚跟,长安将时刻在其攻击范围之内,因此,唐太宗对这里也非常重视,在东征之前就命右领军大将军执失思力率领南归的突厥人驻扎在夏州(今陕西省横山县)以北,进行防御,但显然突厥人不是薛延陀人的对手。薛延陀大举南下的消息传到辽东前线,唐太宗不敢怠慢,赶忙命令左武候中郎将田仁会率军增援执失思力。执失思力采取诱敌深入的战术,佯装不敌,节节南撤,等把薛延陀的军队逐渐引诱到夏州境内时,才整顿军队,以逸待劳,予以迎头痛击。薛延陀军大败,唐军追击六百多里,在漠北耀武扬威一番后才班师。
西北严峻的局势已经不容唐太宗长期滞留在辽东了,但来时容易,去时难,如何全师而退,才最能体现一名统帅的军事才能。
唐太宗下令先把辽州(即辽东城)、盖州(即盖牟城)的百姓迁回国内,而后,在安市城下举行阅兵仪式,展示威力,吓阻城内守军,而后,才慢慢撤军。城内守军不敢出战,城主登上城楼拜别,唐太宗对他忠于职守、不肯屈服的精神表示赞赏,赏赐给他一百匹绸缎;命李世勣、李道宗率领四万步骑殿后。这位守将的名字在中国和朝鲜的正史中都没有记载,但在朝鲜民间传说中却留下了他的名字,他叫杨万春。
九月二十日,唐太宗回到辽东城。当时辽东城内尚有十万斛粮食,唐军取之不尽,弃之而去。二十一日,唐太宗就渡过了辽河,到了辽泽,八十里内车马不通。长孙无忌、杨师道等人率领一万人砍伐树木,填塞干草,修筑道路,水深之处,把大车连接起来当作桥梁,唐太宗亲自把木材系在马上帮助大家。
十月一日,唐太宗到达蒲沟,等着后续部队,督促各军填塞道路,渡过渤错水(流经辽泽的一条河)。当时,天气突变,刮起暴风,降下大雪,气温陡降,很多士兵被冻死,唐太宗命令沿途燃起火把,等待落后的老弱残兵。
这次东征高丽,唐军一共占领了玄菟(今辽宁省沈阳市)、横山(今辽宁省沈阳市东南华表山)、盖牟(今辽宁省沈阳市塔山山城)、磨米(疑为今辽宁省本溪市边牛山城)、辽东(即襄平城,今辽宁省辽阳市)、白岩(在辽东城东六十里处)、卑沙(今辽宁省大连市大黑山山城)、麦谷(似在今辽宁省抚顺市境内)、银山(即银山城,可能在今辽宁省铁岭县南)、后黄(今辽宁省沈阳市南)等十座城池,将辽州、盖州、岩州七万高丽人强制迁到中国。
《资治通鉴》称,在新城、建安、驻跸山三场大战中,唐军共斩杀高丽四万多人,唐军将士战死将近两千人,战马损失将近十分之七八。考诸史料,新城并未发生战斗,李道宗只是前去恐吓一下,唐军最终也没有占领这里,应为误记;建安,张俭杀死数千敌人,此后张亮也在此地击破过高丽人;盖牟城,不详;卑沙城,不详,系偷袭,死伤不会太多;辽东城外会战,杀死一千敌人;辽东城攻坚战,杀死一万多人(极有可能该一万余人与大火烧死的一万余人是重复记载);白岩城外会战,杀死敌人一千余人;白岩城攻坚战,不详,因系投降,死伤不会太多;驻跸山之战,杀死敌人两万余人;安市城攻坚战,敌我双方死伤不详,因此,史料记载高丽被杀人数大致还是可信的。而唐军的伤亡人数历来令人质疑,如此大规模的战斗又持续了近半年,唐军才死亡两千,让人感到不可思议,但仔细分析起来,也不是没有可能:
先说攻坚战。在唐军占领的十座城池中,只有盖牟城、辽东城、白岩城(短暂攻坚,很快归降)进行过攻坚战,安市城经过攻坚战但没有攻下,除史料明确记载的银城和后黄城是高丽人主动放弃、卑沙城被唐军偷袭外,其余的玄菟、横山、麦谷、磨米四座城池,唐军是如何占领的不详,极有可能也与银城、后黄城一样并没有经过大规模的战斗唐军就占领了。真正经过较长时间攻坚战的其实只有辽东城和安市城,再仔细阅读史书,我们会发现,唐太宗、李世勣在组织辽东城和安市城攻坚战中,并没有采取人海战术,不顾将士死活向城上发起强攻,而是利用先进的攻城器械试图先摧毁城墙,打开缺口之后再攻入城内,比如,辽东城采取的火烧辽东的办法,令守军内顾不暇,趁乱突入;安市城则是采用修筑土山的办法,试图突入城内,使的都是巧劲,这样就极大程度地避免了强攻城池所造成的巨大伤亡;
再说野战。这次辽东之战中,双方共计进行过次野战,主要包括:张俭建安之战、李道宗辽东城外之战、契苾何力白岩城外之战、唐太宗驻跸山之战这四场大战。张俭在建安城附近击破高丽军队,详情已不可考,但此次出击,是在唐军得知莫离支有可能赶赴辽东的情况下在南面的一次突击,并且张俭率领的军队人数不会太少,该行动出乎高丽军的意料之外,因此,这场战斗唐军死伤人数不多,也是可能的;李道宗辽东城外之战,唐军仅仅杀死一千高丽军队,自己的伤亡情况也不会太多;白岩城外之战,与辽东城外之战大致相同;驻跸山之战是一场大战,《资治通鉴》记载高丽军队有十万人,《旧唐书?薛仁贵传》更是记载为二十五万,但从最终的结果上看,唐军杀死两万,余众三万六千余人投降,高丽援军应为五万到六万人,唐军能够做到分兵数路、并将三万余高丽残兵包围,人数上肯定是占据绝对优势的,因此,虽说驻跸山之战是一场大战,但却是一场围歼战,唐军死伤人数不多也在情理之中。
《新唐书?高丽传》称:“始行,士十万,马万匹;逮还,物故裁千余,马死十八。船师七万,物故亦数百。”由此可知,这次东征,唐军一共出动十七万大军,其中陆军十万(李世勣、李道宗率领六万、唐太宗率领四万)、水军七万(张亮四万,下余三万可能是增援部队)。有人认为,史书上记载的马匹死亡十分之七八,是掩盖唐军士兵死亡人数的一种隐晦说法,如果真的如此,那么唐军死亡可能在一万人左右。