在太平天国运动的后期,从陕西回师到鄂豫皖边界的一支太平军因天京的陷落而非常沮丧,其中一个主要领袖扶王陈得才绝望地自杀了。但另一个主要领袖遵王赖文光却联合了这一带的捻军,与皖北捻军的领袖张宗禹、任化邦携手,又把农民战争的火焰在长江以北,东至山东,西到陕西的广大地区内燃烧起来。
1865年初,清朝名将僧格林沁统率蒙古骑兵在山东进剿捻军。捻军采用运动战术,一日驰数百里,使僧格林沁疲于奔命;再选择有利战机和地点,狠狠打击僧军。1865年5月,捻军把僧格林沁的主力引到山东荷泽县西北的高楼寨,利用有利地形,设伏于寨外河堤之后,一举全歼僧军马队,僧格林沁阵亡。捻军声威大振。清政府惊慌地发现,捻军已成为朝廷新的大敌,急调湘军和淮军进剿。曾国藩、李鸿章相继被任为进剿山东、河南捻军的统帅。1866年,捻军在河南许昌分军为东西两支。一支由赖文光、任化邦率领,留在中原地区活动,为东捻军;另一支由张宗禹率领,挺进到陕北,为西捻军。
1866年,左宗棠调任陕甘总督。1867年2月,他被授为钦差大臣,督办陕甘军务,受令负责进剿西捻,镇压回民起义。
从1862年起,在西北的陕西省、甘肃省和宁夏、青海的东部,许多回民和汉民杂居的地方爆发了回民起义。在陕西、甘肃的辽阔地区内,回民到处一呼百应地起来,反抗清政府歧视少数民族的民族政策。随着斗争的发展,西北回民起义形成四股较大的势力;宁夏金积堡马化龙部、甘肃临夏马占鳌部、青海西宁马文义部、甘肃酒泉马文禄部。
左宗棠深知到西北边远地区行军作战,粮饷难筹难运。仗怎么打,战略怎么定,左宗棠心中还没有策划好。左宗棠带着3000人马乘船从福州马尾港一路北上,一路上都反复思考着这几个决定全局胜负的大问题。船队一到汉口,左宗棠就和先期到达的刘典、王柏心聚论了几天,决定了陕甘之战的基本打法:“先秦后陇”、“先捻后回”,分割西捻军与回民军的联合,次第解决。
左宗棠为了解决粮饷问题,提出兵屯之举。兵屯,意味着战争不好打。一进兵,一接仗,就要耗尽地方钱粮。如果是旷日持久的战争,地方的力量无论如何是接济不上的。如果靠朝廷,西北边陲路途遥远,一时也难以为继。如果断了粮道,那就前功尽弃。左宗棠决定取屯兵渐进之策。将各路军营中筛汰出来的老弱残之兵勇留下屯田垦荒,攻克一处,屯田一方,留下的兵勇虽少一些,但军粮可省,兵精将勇,后方稳妥,实为久远之计。
至此,左宗棠定下战争方略,遂上书朝廷,请求皇上宽以岁月,取屯兵渐进的打法。左宗棠立下军令状:“臣频年转战东南,于西北兵事未曾经历。伏恳皇上假以方便,宽以五年,责臣以西陲讨贼之效,不效则治臣以罪,以明军令。”
兵马未动,粮草先行。左宗棠派员采购口壮良马,又派官僚买办胡雪岩打通上海海关,从英国汇丰银行借支白银120万两充作军饷,同时急电催促各巡抚衙门解往西北的饷粮赶紧上路。1867年6月,左宗棠分兵三路入陕。12月,西捻军由陕北渡黄河急援东捻军,直到保定,威胁清朝的首都。左宗棠因此受责,朝廷圣旨“严加议处”,因作战不利被革职留任。他率部5000人尾随追击至保定后,把军队分成近防、进剿和防剿三大部分,前者驻固安、涿州,拱卫北京;二者驻保定、河间、天津,屏障北京;三者是随进随剿,三管齐下,围追堵截。朝廷采纳了左宗棠的打法,命左宗棠总统河北、山西境内各军防堵,与总统山东各军的李鸿章相配合。1868年8月,西捻军在冀鲁边界沿海狭小地区内被封锁围困,终至全军覆没。清廷加左宗棠太子太保衔,再次令他回陕专力进攻回民军。左宗棠于1868年10月从西安出发,分路进剿起义的回民武装。
回民起义军的基本群众是遭受重重封建剥削的贫苦的回民百姓,但其领导者则是回族中的上层剥削分子,如马化龙是个封建主,又是宗教领袖;马文禄是清朝的军官,而且是各自分股活动。左宗棠于是采取了“先抚后杀”各个击破的策略。
1969年4月,左宗棠攻陷陕西回民军根据地。6月进驻泾川,发兵攻打马化龙部根据地金积堡,久战不胜。第二年,左宗棠令楚军决秦渠水灌淹金积堡,马化龙投降。1871年8月,左宗棠移驻静宁,分兵三路进攻马占鳌部回民根据地临夏。第二年春,马占鳌投降。1872年8月,左宗棠移驻兰州,分兵攻取西宁。1873年春,他增兵围攻马文禄部回民军根据地酒泉,屡遭挫败,炮轰、挖地道、爬濠均不奏效。后因回民军粮尽,马文禄开城投降。至1873年,左宗棠已经把陕甘的回民起义大体镇压下去了,为进军新疆打开了至关重要的通道。