1867年,正当刘岳昭部湘军及岑毓英部滇军在黔西作战之际,杜文秀的大理政权有了进一步的发展。他们击退了前来进剿的马如龙军,并乘势以20余万大军反攻,包围了昆明。岑部滇军增援昆明,任主攻,刘部湘军入滇东北部,为策应。经过反复争战,直至1869年,瓦解了回民军的攻势。以后,又经过3年的争战,岑毓英于1872年冬兵临大理城下。杜文秀于服毒后赴清营被杀。2万多放下武器的回民军遭到屠戮。大理政权覆灭。其余部则坚持活动到1874年。
西北地区。清廷于1866年调左宗棠为陕甘总督。1867年,左宗棠授钦差大臣,督办陕甘军务。此时,西捻军在张宗禹率领下已突入陕西,正寻求与回民军合作。左宗棠决定“先捻而后回”,集中力量先对付威胁最大的西捻军。1868年,西捻军覆灭后,左宗棠乃率军返陕,又采取先东后西的战略,即先清陕西,再图甘肃。陕西境内的西捻军余部就歼,董福祥等部投降。1869年春,左宗棠兵分三路大举西进,夺取了陕西回民军在甘肃董志原的根据地。陕回余众一部西撤西宁,一部北撤金积堡。
金积堡的马化龙身为伊斯兰教白山派(新教)教主,又拥有在甘肃各回民军中最为雄厚的军力和财力。左宗棠决定首先拿他开刀,希图取得震慑的效果。马化龙拼死抵抗,于1870年2月击毙湘军悍将刘松山。回民军之一部且深入陕西境。左宗棠以刘松山侄刘锦棠继统其军,增强兵力,继续围攻。是年冬,金积堡的外围堡寨或破或降,相继被肃清。马化龙在给养与外援断绝的情形下被迫交出军械投降,但左宗棠还是找了借口将马化龙及其骨干处死。1871年秋,左宗棠又向河州回民军发起攻击。马占鳌组织回民军顽强抵抗,击毙湘军分统二人。1872年3-4月,左宗棠在各军整顿休整后重新展开攻势。马占鳌却于此时排除众议,力主投降。左宗棠大喜过望,很快收编了河州的回民军,并开始组织对西宁地区的攻击。同年春,马桂源兄弟败死。前往依附的陕回崔伟等部投降,仅白彦虎率众退往肃州。1872年冬,肃州马文禄败亡。白彦虎又率部退入新疆。