1877年,清朝遭遇了百年难遇的一次大饥荒,史称“丁戊奇荒”。与此同时,俄国人中断了向西征军卖粮,刘锦棠的部队只有在吐鲁番缴获的敌军少量粮食以及在北疆地区屯田所收的粮食。因此,刘锦棠必须赶在冬天大雪封山来临之前全面收复南疆地区,否则隔年军队就会面临缺粮的困境。10月2日,各队清军在曲惠集结,准备进攻库尔勒。白彦虎果断舍弃库尔勒,向南逃窜。临走时,他强迫当地老百姓一同向南撤退,并带走了大量粮食。为阻止清军南下,他还掘开了开都河,致使喀喇沙尔城被水淹没,南下的道路变得泥泞不堪。
当刘锦棠的后勤辎重车队被困在泥泞的道路上时,他已然洞悉了白彦虎的策略。刘锦棠决定舍弃一些后援物资,率领全军前进。10月7日,清军进入了被河水淹没的喀喇沙尔城。10月9日,清军抵达已无人烟的库尔勒地区。此时,刘锦棠停下脚步,派出所有士兵在城里到处挖地洞。这是为何?他认为秋收刚过,白彦虎裹挟的当地民众不可能带走所有粮食,剩余的粮食肯定被藏匿起来了。刘锦棠意识到,白彦虎向南撤退必然会继续裹挟民众,如果所有老百姓都被转移,届时清军一路将会看到更多荒无人烟的地方,无法从当地百姓那里买到粮食。于是,刘锦棠决定挑选出2500名最为精锐的骑兵,携带六门小口径克虏伯炮,连夜追击白彦虎。
裹挟民众逃亡的白彦虎在10月12日被清军追上。白彦虎没想到清军来得如此之快,他原本以为自己给清军行军路上设置的障碍至少会让清军一个月后才能抵达库尔勒。经过一番思考,他觉得追上来的清军应该是小股部队,于是决定应战。毕竟他拥有一万多装备精良的骑兵,但他不想进行骑兵对冲,决定构筑防御工事,就地防守。他认为,清军骑兵定会试图冲入他的阵线,而他现在的武器全是后膛步枪,射速极高,如果清军骑兵贸然冲入他的阵线,全会成为他的活靶子。刘锦棠也清楚冲锋无疑是去送死,但如果不打则会被饿死。刘锦棠别无选择,只能孤注一掷。
自从白彦虎在陕西回民起事以来,两人交手次数众多,刘锦棠太了解白彦虎了,他知道白彦虎最大的能耐就是能跑。刘锦棠想到了破敌的良策,他派出两组各200名的骑兵小队,在骑兵身上绑上树枝,奔跑时能扬起巨大的烟尘。让这两队人马在白彦虎视线不及之处沿着敌军阵营左右两侧迂回,直插白彦虎的后方。白彦虎远远望见戈壁上掀起两道烟尘,正滚滚向前。凭借多年的战斗经验,他猜测这两股清军加起来大概有四五千人。刘锦棠接着用同样的方法派出第三队人马从远处向正面冲来,同时让其他人用大炮进行掩护。
当白彦虎看到正前方的滚滚烟尘时,他认为至少也有四五千人。白彦虎此时开始有些慌乱,他合计了一下,三队人马加起来可能有一万多人,与自己的兵力相当。而且这么多年他一直与刘锦棠交战,他也很畏惧刘锦棠,他的直觉告诉他,实在不行就跑。随着正前方的炮弹声愈发响亮,他赶忙让一万多人的队伍上马,一瞬间跑得无影无踪。正所谓兵不厌诈,刘锦棠深知白彦虎最大的特点便是反应迅速,稍有不对立刻就会逃跑。也正是因为白彦虎的这个特点,让刘锦棠颇为头痛,每次都无法抓住他。但这次,刘锦棠却巧妙地利用了这个特点。
10月17日,白彦虎逃窜至库车。当时驻守库车的敌军将领哈迪尔伯克本打算擒拿白彦虎,献交清军以将功折罪,然而不幸的是,他没能打过白彦虎。就在同一天,刘锦棠亲率大军追至库车城下,白彦虎又仓皇向南逃离。此时,阿古柏的长子伯克胡里派遣了由土耳其军官率领的援军,越过阿克苏,前来支援白彦虎。白彦虎和土耳其军官率领的伯克胡里军在拜城附近占据了有利地形,隔着一条河修筑工事,准备在此地与刘锦棠展开决战。双方兵力加起来多达两万余人,而刘锦棠追来的部队却不足一万人。这些土耳其军官皆出身于奥斯曼帝国最好的军校,还曾参加过克里米亚战争。他们所布置的工事也是依照西方的军事条例,安排了最为合理的火力部署,只等刘锦棠自投罗网。
这对于刘锦棠来说,既是期待已久的决战机会,同时也是一个陷阱。倘若刘锦棠强行进攻,必然会惨败。刘锦棠先派出部分部队从侧翼迂回。土耳其军官的侦察兵发现清军派来的骑兵部队有差不多四千人,正在向河的上下游进发。刘锦棠带来的军队总计七八千人,上下游各派了两千多,剩余的也就三四千人。土耳其军官决定主动出击,他们留下5000人防守阵地,随后派出15000人渡河进攻刘锦棠。他们认为以五倍的兵力去围歼对方,必然能够取胜,然后再集中兵力攻打迂回的部队,各个击破。白彦虎与土耳其军官率军一起渡河,向清军发起了猛烈的攻击。
清军在炮火的轰击下乱成一团,迅速向后方溃败而逃,清军一路跑到附近的一座小山上,并翻过山头,叛军猛追不舍,当他们追到半山腰时,密集的炮弹突然从山上飞射而来,大量清军也从山脊上现身,露出一支支枪管,横扫山坡上的敌军。等叛军明白这是陷阱时,已骑虎难下,土耳其军官决定孤注一掷,利用人海战术攻下这座小山。可是一次又一次的进攻均被山上的清军一次又一次地击退。白彦虎此时察觉情况不对,多年的战场经验让白彦虎的预感极其敏锐,直觉告诉他,再不逃跑就来不及了。
就在白彦虎刚跑出不远,从战线的左右两翼涌出大批清军,他们正是那些去上下游包抄的清军,不过那只是虚晃一枪,引诱之后便返回了。接下来,土耳其军官指挥的敌军瞬间土崩瓦解,溃不成军。清军发动了全线反击,杀得敌军尸横遍野。清军顺势渡过河流,越过叛军精心构筑的工事,将伯克胡里军全歼。刘锦棠没有给白彦虎喘息的机会,一路穷追不舍。拜城、阿克苏、乌什、阿合奇等当地人纷纷驱逐伯克胡里的官员,关闭城门拒绝白彦虎进入。相反,在10月21日,拜城人打开城门迎接清军入城。柯尔克孜牧民还随清军追击白彦虎的残兵。清军一直追至阿克苏地区的乌什,也没有发现白彦虎的去向,又才返回拜城。
与此同时,和阗地区的敌军首领向清军投降。10月底,伯克胡里率领军队前往和阗,试图剿灭这支投降清军的部队。伯克胡里安排清军降将何步云驻守喀什噶尔。何步云原本是清军的守备,当年阿古柏入侵时,何步云无奈之下投降了阿古柏。当何步云听闻清军大部队即将到来,立即宣布反正,并派人向刘锦棠请求援救,同时还夺取了英吉沙尔。伯克胡里返回抵达英吉沙时尔,得知何步云据守喀什噶尔反正,为了泄愤,屠杀了英吉沙尔最后剩余的三百汉民。
1877年11月初,白彦虎所部几十人终于逃至喀什噶尔附近,与从和阗归来的伯克胡里相遇。驻守喀什噶尔的何步云拒绝为他们打开城门,于是白彦虎和伯克胡里开始联手攻打喀什噶尔。11月中旬,清军渡过阿克苏河,在柯坪将敌军击溃,营救出被掳来的哈密、沙雅等地民众数百人。刘锦棠收到何步云的求援后,一路疾驰,赶赴喀什噶尔,并随即加入战斗。那些被胁迫参加围城的民众纷纷逃离。白彦虎的副元帅王元林被清军击毙,白彦虎和伯克胡里分别逃入俄罗斯境内。清军乘胜收复喀什噶尔之后,又相继收复了叶尔羌、英吉沙尔以及和阗地区。至此,清军彻底击灭了阿古柏建立的“洪福汗国”的全部力量,收复了除被沙俄占据的伊犁地区之外的所有失地。