1857年夏,文祥指揮清軍進攻下關東面的趙州。時值滇東、滇南迴民武裝力量圍攻昆明,滇西杜文秀部乘機襲擊文祥部後路。文祥部清軍腹背受敵潰不成軍,文祥退回鎮南州(今南華),彌渡和雲南縣(今祥雲)為杜文秀部人馬佔領。
1859年2月,董家蘭指揮“興義營”團練軍,水陸兩路對大理髮動突然襲擊。潛伏在大理城下的數百名練勇利用夜暗,用棺木裝火藥將城牆炸開,奪佔了東門城樓,但從洱海進攻的團練主力因遇到大風浪,未能按期到達以致對大理的襲擊又遭失敗。
不久,董家蘭因援鄧川(今洱源東南)被杜文秀部擊斃,張正泰亦因內訌被部下殺死。張董二人既死所部團練軍一蹶不振,陸續被大理城杜文秀部消滅。於是滇西回民武裝聲勢大振,乘機向四外大肆擴張。
因為在杜文秀手上連戰連敗,以致官府“是時無敢言復大理者”。
因清軍屢敗新任雲貴總督於1860年1月奏請以總兵褚克昌署理雲南提督,辦理滇西軍務。之後褚克昌率兵西上,經祿豐、楚雄,於3月間至鎮南州,接任提督職務。他一面分兵進攻杜文秀部佔據的姚州、大姚,一面率主力繼續西進。
杜文秀眼見清軍氣勢太盛大急忙收縮兵力,主動放棄沙橋(鎮南西北)、雲南驛(雲南縣東南)等據點,退守易守難攻的大理縣城。褚克昌率軍尾追至大理縣城下,指揮所部清軍進攻縣城和彌渡、紅巖(彌渡西北)等地。
面對褚克昌部清軍的大舉進攻,杜文秀一面派人發動滇東、滇南迴、漢、彝各族百姓幫忙以牽制清軍,一面催調正在進攻緬寧(今臨滄)的大都督蔡法春率軍回援,同時致書澂江的馬德新部,請求派兵支援配合,以切斷褚克昌部的後路,行成東西夾擊的態勢。
……
1858年,滇東、滇南迴民武裝力量從昆明撤圍散歸各地之後,當時的雲南巡撫即調集清軍向回民進攻,回民被迫起而自衛。馬德新、馬如龍因個人目的沒有得到滿足,也乘機再次起兵,於是滇東、滇南迴民武裝力量又得到了發展。
1860年春,馬如龍受馬德新之命,率部西援杜文秀,4月底與李芳園部會合,共萬餘人,由南安州直逼楚雄。回民武裝聯軍於5月3日攻克廣通,5日在回鐙關(廣通西南)大敗楚雄清軍來援人馬,擊斃清軍遊擊高天澤。
8日,又在小腰站殲滅楚雄清軍千餘人,擊斃千總蘇鎮東。“楚雄得力將弁,無出高天澤、蘇鎮東右者,相繼敗沒,兵勇奪氣。”5月21日滇東、滇南迴民武裝包圍了楚雄府城。
楚雄清軍連敗兩仗、士氣低落的楚雄清軍人馬無力阻擋回民武裝的銳利攻勢,楚雄知府楊覲向署理提督褚克昌求救。褚克昌正在進攻彌渡、紅巖,無兵可派,只得盡撤鎮南大營清兵赴援楚雄。
6月5日,褚克昌率軍親抵楚雄府城,馬如龍、李芳園指揮回民武裝力量晝夜圍攻,於6月11日用地雷轟塌城垣二十餘丈攻入城內。城中清軍一部投降大部被殲。知府楊覲、副將慶連等被打死,褚克昌見機得快逃往鎮南。
回民武裝聯軍攻佔楚雄,不但切斷了楚雄清軍的後路,而且由於清軍官兵的父母妻子多寓居楚雄,以致前線軍心瓦解無意作戰。儘管褚克昌部將楊有才、張玉柱所部清軍攻佔了彌渡和紅巖,卻無法擺脫這種不利的困境。
而此時滇西回民武裝又從西面發動了強大的攻勢,使清軍腹背受敵更形狼狽。大理回軍大都督蔡法春於1860年4月底攻陷緬寧後,即率領雲州、順寧、蒙化、緬寧回民武裝二萬餘東下,楊德明等也率大理、蒙化回民武裝八千餘人,在雲南縣與之會合聯合向彌渡、紅巖等地進攻。
雙方連日交戰清軍傷亡慘重,褚克昌得力將領張福保、楊有才、陳開榜、王有才等被打死。褚克昌慌忙從鎮南迴到雲南縣大營指揮作戰,仍無法挽回敗局。最後清軍因糧盡兵潰,遊擊張玉柱、守備孫佔魁率部投降大理政權,紅巖、彌渡先後失守再次落入回民武裝手中。
大理杜文秀部回民武裝隨即進攻雲南縣清軍大營,並分兵一路由虎應龍、保文明、桂春亮率領北攻賓川。這時馬如龍率領的滇東、滇南迴民武裝也先後攻佔了南安州、鎮南州和定遠(今牟定)縣城,控制了楚雄府全部州縣。
清軍署理提督褚克昌見處在各路回民武裝東西夾擊之下的雲南縣清軍大營危在旦夕,便以往援賓川為藉口率部撤離,僅留守備周士傑等防守。大理蔡法春見此便集中兵力猛攻雲南縣清軍大營,經十幾天激戰全殲守敵,接著又轉攻賓川。