面对势如虎狼的噶尔丹,朝廷中出现了不同的意见。有的人提出西北路途遥远,兴师前往未必能够将其剿灭,主张先不行动。康熙皇帝坚决反对这种意见,指出只有边境安定,国家才能够长治久安,决不能苟图一时安稳,他决心亲征。康熙二十九年(公元1690年)二月,康熙皇帝组织两路大军,以和硕裕亲王福全为抚远大将军、皇长子胤褆为副统领,由内大臣佟国纲、佟国维任参赞;以和顺恭亲王常宁为安北大将军,以和硕简亲王雅布和多罗信郡王鄂扎为副统领,由内大臣索额图、明珠和阿密达等担任参赞。
康熙皇帝本人则于七月十四日率禁军由京师起程,十日后驻扎在博洛和屯,以统筹全局,就近指挥前线战役。起程前,康熙皇帝已经感冒,在前往博洛和屯的途中,病情更加严重。在大臣们的恳请下,他决定暂且回京,但前线作战的具体部署依然由他决定。清军分两路出发后,按照各自预定的路线行军。左路军副将胤褆由于听信他人谗言,同福全关系不睦,并私自向康熙皇帝陈奏告状。
康熙皇帝担心胤褆在军中扰乱军心,便立即下令将其调回京师,另派康亲王杰书率军与福全会合。由于几天的耽误,延误了左路军北上的时间,导致常宁率领的右路军孤军深入,在乌珠穆沁同克什克腾旗交界处遭遇噶尔丹军队后,不敌对方攻击,向南退却。噶尔丹趁势继续用兵,占据了乌兰布通,距离福全军仅三十里。康熙皇帝得报后,命令常宁速去与福全会合,于乌兰布通夹击噶尔丹;同时命杰书率兵西进,驻扎于归化城,切断噶尔丹西退的途径。
此时,噶尔丹受到清军左右两路的夹击,但是他依仗着乌兰布通的有利地形,在山林深处安营扎寨。战前,噶尔丹设计了“驼阵”,即将上万头骆驼的腿捆绑起来,用湿毛毡蒙上,作为掩体,士兵则从缝隙中发射弓箭和枪炮。凭借着这样的驼阵,噶尔丹能攻能守。战争开始后,驼阵果然起到了显著的效果,清军使用弓箭、火铜攻击都毫无效果,而自身又缺乏掩体的保护,伤亡惨重,佟国维在冲锋中阵亡,前锋参将格斯泰和前锋统领迈图也在战斗中牺牲。康熙皇帝得知前线被困于“驼阵”,即命费扬古率八旗炮兵营携红衣大炮等急赴参战。
在大炮的攻势下,骆驼纷纷扑地,噶尔丹的工事被毁,清军趁势发动冲击,噶尔丹惊溃败退。次日,噶尔丹组织部队北撤,并派济隆活佛携请罪书前往清军营地游说,表示再不进犯喀尔喀。福全中了噶尔丹的缓兵之计,命令自己的部队和其他各路军停止进攻。康熙皇帝得到前线捷报后,下令追敌,不留后患。五六天后福全接到康熙皇帝的命令时,噶尔丹已经率残部远退,追敌已经来不及,就这样乌兰布通大捷的胜利成果功亏一篑了。
乌兰布通战役后,噶尔丹率残部两千余人回到了科布多,此时他的营地和妻子家眷已经被其侄策妄阿拉布坦洗劫一空。但噶尔丹依旧贼心不死,一面休养生息,以图将来东山再起;一面争取沙俄的支持。康熙三十三年(公元1694年),康熙皇帝多次约噶尔丹参加会盟,以调节准格尔部同土谢图汗等部之间的矛盾。而噶尔丹拒不接受清廷的邀请,反而蛮横地要求清政府交出土谢图汗和哲布尊丹巴,不然将继续用兵喀尔喀。
次年,噶尔丹自认为兵力充足,再次向喀尔喀蒙古进攻,并扬言在冬后进攻漠南。康熙皇帝召集了朝中三品以上的武官,共商征剿方案。许多大臣主张距离太远,沙漠地带运送武器粮草都实为不易,劝康熙皇帝不要轻举妄动。将军费扬古则主张出兵进剿,认为若不尽早根除噶尔丹,北部边疆必定后患无穷。经过多次听取大学士意见和议政王大臣会议的讨论,康熙皇帝决定再次率兵亲征。
康熙三十五年(公元1696年)二月,康熙皇帝下令兵分三路,其中,黑龙江将军萨布素率东路军由兴安岭克鲁伦河进发;抚远大将军费扬古率西路军从宁夏越过沙漠沿翁金河北上,切断噶尔丹的退路;康熙皇帝则亲率中路主力军,出独石口至克鲁伦河,协同东西路军夹击作战。康熙皇帝率领的中路军在无边无际的沙漠和草原上行进数千里后,经过五十九天的艰苦历程,终于在五月初五从科图逼近噶尔丹。
西路军途径的草地被噶尔丹焚毁,只能迂回前进,因此行程速度受阻;东路军也未按时到达预定地点,这就给中路军带来不利态势。此时又有传闻沙俄出兵来援,大学士伊桑阿担心中路军遭敌方夹击,建议康熙皇帝率中路军后撤。康熙皇帝严加斥责了这种畏战惧敌的言论,表示此次亲征一定要歼灭噶尔丹。经过分析讨论,康熙皇帝下令中路军继续前进,并将队伍分成两路,一路占据克伦和左岸的山麓高处,佯作大部队将从那里经过,然后自己率另一路争先据河,并于克鲁伦河一带夹击噶尔丹。
噶尔丹原本并不相信康熙皇帝会亲征,当他从清军放回的俘虏口中得知康熙皇帝确已亲征,便到高山上向远处望去,发现“御营黄幄龙纛,环以幔城,又外为网城,军容山立”,遂命部下抛弃庐帐、兵器,连夜逃窜。康熙皇帝率兵渡过克鲁伦河后,抵达巴彦乌兰,结果却扑了个空,便又立即率三名总兵,挑选精兵轻骑,对噶尔丹猛追不舍。同时令费扬古率西路军疾驰至昭莫多设伏堵截。
康熙皇帝带领的轻骑连续追击了五天,但是由于粮饷供应不续,不得不停止。费扬古则督兵星夜奔驰,终于在五月十三日赶在敌人之前到达昭莫多。紧接着,费扬古按照康熙皇帝的部署,命一部分旗兵下马步行,在昭莫多东部列阵;同时令骑兵主力隐蔽在图拉河对岸的密林中。布阵完毕,噶尔丹的部队已经行至距离昭莫多三十里的地方,费扬古便派出四百骑兵迎战,用且战且退的方式将其引至昭莫多。
噶尔丹一路直追,想最终在昭莫多猛扑清军各制高点,清军则以子母炮等予以还击,在整日的激战之后,双方胜负难分。这时,费扬古发现噶尔丹军后阵一直没有动静,断定是家眷和牲畜等,于是又派出一支精骑兵前往袭击。这一招令噶尔丹军营大乱,清军立即趁机四面出击,杀敌三千余人,俘获人畜无数,噶尔丹爱妻阿奴也被斩杀。噶尔丹见大势已去,便自率数骑逃跑。康熙皇帝的此次亲征,取得了辉煌的胜利。五月十八日,得昭莫多捷报传来,康熙皇帝决定班师回朝,命费扬古驻守喀尔喀招降噶尔丹及其残部。