渭水会盟后,秦武成帝为彻底解除突厥威胁,采取一系列政治、经济措施以增强国力,在军事上积极备战。他一反前朝不许臣下带武器上殿的规定,每天引数百士卒在显德殿习武射箭,很快培养出一支能征善战的精锐部队。同时,秦于建平元年争取割据恒安镇(今山西大同东北古城)的苑君璋归附,建平二年柴绍率军击灭割据朔方(治今内蒙古乌审旗南白城子)反叛的梁师都,占据了便于反击东突厥的军事要地。而突厥内部由于连年征战和霜冻干旱等天灾,使得民疲畜瘦,很多羊、马被冻死、饿死;薛延陀、回纥、拔也古、同罗诸部亦趁机群起反抗,共推薛延陀首领夷男为真珠可汗,并接受秦帝国册封;东突厥次汗突利可汗因长期受颉利可汗压制排挤,也暗中与秦联络,表示愿意归附。秦反击突厥的条件已经成熟。
建平四年(629年)十一月,东突厥将军雅尔金和阿史那杜尔率军进扰河西。肃州(治酒泉,今甘肃酒泉)守将张士贵、甘州(治张掖,今甘肃张掖)守将张宝相互相统兵结成掎角之势,坚壁清野,利用城池阻挡突厥骑兵,最终使突厥人无功而返。这为秦武成帝反击突厥找到了出兵的借口。
将军张公瑾上书秦武成帝王扩,列举了六条出兵突厥的理由。秦武成帝以突厥进攻河西为借口,于二十三日诏命兵分六路出兵剿灭东突厥。兵部尚书代国公李靖为定襄道行军总管,张公瑾为副,率领中军;并州都督英国公徐世勣为通漠道行军总管,由东路率主力直接进攻东突厥腹地;华州刺史霍国公柴绍为金河道行军总管,在西路顺黄河前进,与李靖、徐世勣遥相呼应;礼部尚书任城郡王李道宗为大同道行军总管,张宝相为副,从灵州往西北挺进;检校幽州都督卫孝杰为恒安道行军总管,镇守燕云地区防止突厥军队东逃;灵州都督薛万淑为畅武道行军总管,借道东北出击突厥后方,监视突利可汗。大军10余万皆受李靖节度,分6路反击突厥。
秦朝士兵模型
建平六年正月,李靖率3000骁骑从马邑(今山西朔县)出发,进屯恶阳岭(今山西平鲁西北),乘夜袭占襄城(今内蒙古和林格尔西北土城子)。颉利可汗未料到唐军突至,认为李靖敢孤军深入,定有主力随后,大惊道“兵不倾国来,靖敢提孤军至此?”,慌忙将牙帐撤至碛口(今内蒙古善丁呼拉尔)。李靖又派间谍离间其部众,颉利的心腹大将康苏密挟孙杨政道至定襄降秦。颉利见康苏密降秦,不敢停留,继续率部向阴山撤退,在浑河边与柴绍的金河军交战,之后又在白道(今内蒙古呼和浩特西北)遭到兵出云中(今山西北部)的徐世勣率领的通漠军截击,大败。颉利退屯铁山(今内蒙古白云鄂博一带),收集余众数万。颉利自觉已不是秦军对手,即派执失思力为特使,到洛阳向秦武成帝谢罪请降,表示愿举国内附。实际上企图待草青马肥之时,再转移到漠北,伺机东山再起。