629年十一月,突厥将军雅尔金和阿史那杜尔率军进扰河西。肃州守将张士贵、甘州守将张宝相,互相统兵结成犄角之势,坚壁清野,利用城池阻挡突厥骑兵,最终使突厥无功而返。
李世民找到了出兵的借口,正式反击突厥。张公瑾上书李世民,列举了六条出兵突厥的理由。一是颉利可汗奢华残暴,诛杀忠良,亲近奸佞;二是薛延陀等部落均已叛离;三是突利、拓设、欲谷设等小可汗,均得罪颉利可汗,无地自容;四是塞北地区经历霜冻干旱,粮食匮乏;五是颉利可汗疏离族人,委重任于外族,胡人反复无常,大唐军队一到,必然内部纷乱;六是汉人早年到北方避乱,至此时人数较多,近来听说他们召聚武装,占据险要之地,大军出塞,自然内部响应。
李世民诏命兵分六路出兵剿灭东突厥。兵部尚书代国公李靖为定襄道行军总管,张公瑾为副,率领中军;并州都督英国公李世积为通漠道行军总管,由东路率主力直接进攻东突厥腹地;华州刺史霍国公柴绍为金河道行军总管,在西路顺黄河前进,与李靖、李世积遥相呼应;礼部尚书任城郡王李道宗为大同道行军总管,张宝相为副,从灵州往西北挺进;检校幽州都督卫孝杰为恒安道行军总管,镇守燕云地区防止突厥军队东逃;灵州都督薛万彻为畅武道行军总管,借道东北出击突厥后方,监视突利可汗。大军10余万皆受李靖节度,分六路反击突厥。
630年正月,李靖率3000骁骑从马邑出发,进屯恶阳岭,乘夜袭占襄城。颉利可汗未料到唐军突至,认为李靖敢孤军深入,定有主力随后,慌忙将牙帐撤至碛口。李靖又派间谍离间其部众,颉利的心腹大将康苏密挟前隋萧皇后及其孙杨政道至定襄降唐。
颉利见康苏密降唐,不敢停留,继续率部向阴山撤退,在浑河边与柴绍的金河军交战,之后又在白道遭到兵出云中的李世积率领的通漠军截击,大败。
颉利退屯铁山,收集余众数万。他自觉已不是唐军对手,即派执失思力为特使,到长安向李世民谢罪请降,表示愿举国内附。颉利可汗实际上企图待草青马肥之时,再转移到漠北,伺机东山再起。
李世民派鸿胪卿唐俭、将军安修仁等去突厥抚慰,令李靖率兵接应。二月,李靖引兵至白道与李世积会合。李世积道:“颉利可汗虽然战败,人马还多,如果走过沙漠,得到九姓铁勒的庇护,道路遥远险阻,就很难追上他们了。如果陛下派唐俭到那里去,突厥必定放松戒备,我们随后去袭击,这样就可以不战而平定贼寇了。”李靖握着李世积的手腕高兴道:“懋功,你的这番话,就是韩信灭田横的策略啊!”
张公瑾怕这么做会使唐俭等人身陷险地。李靖道:“只要能剿灭突厥,唐俭等人根本不用去考虑。”
李靖率精兵连夜出发,李世积统大军续后前进。李靖大军冒雪至阴山,遇突厥营帐千余,尽俘之以随军。颉利可汗见大唐派使者前来抚慰,以为安然无事,未加戒备。
二月初八,李靖派偏将苏定方率200骑兵为前锋,在浓雾掩护下衔枚疾进,至颉利可汗的牙帐七里才被发现。苏定方长驱直入攻下颉利可汗的牙帐,颉利可汗乘千里马西逃。李靖率大军跟进,突厥大军溃散,被歼灭万余人,被俘男女10余万。唐俭、安修仁趁乱脱险而归。
颉利可汗在阴山被击败后,仓皇由云中向西逃窜,意图投奔吐谷浑国王慕容伏允或高昌国王鞠文泰。在半路上,他的部将大多叛逃,其子叠罗施也与他走散。
不久,颉利可汗身边只剩下数十名骑兵,迎头撞上了李道宗带领的大军。双方一番激战后,唐将张宝相将颉利可汗擒获。
李世民没有杀死颉利可汗,而是封他为归义王、右卫大将军,让他在长安度过余生。突利可汗随后归降,被封为北平郡王。突厥大将执失思力、阿史那杜尔、阿史那思摩以及契苾何力等悉数归降,都受到唐朝的重用。真珠可汗夷男也上表表示归顺。
却说李靖千里追杀义成公主,不愿意放跑她。义成公主在朱雀等