因清军屡败新任云贵总督于1860年1月奏请以总兵褚克昌署理云南提督,办理滇西军务。之后褚克昌率兵西上,经禄丰、楚雄,于3月间至镇南州,接任提督职务。他一面分兵进攻杜文秀部占据的姚州、大姚,一面率主力继续西进。
杜文秀眼见清军气势太盛大急忙收缩兵力,主动放弃沙桥(镇南西北)、云南驿(云南县东南)等据点,退守易守难攻的大理县城。褚克昌率军尾追至大理县城下,指挥所部清军进攻县城和弥渡、红岩(弥渡西北)等地。
面对褚克昌部清军的大举进攻,杜文秀一面派人发动滇东、滇南回、汉、彝各族百姓帮忙以牵制清军,一面催调正在进攻缅宁(今临沧)的大都督蔡法春率军回援,同时致书澂江的马德新部,请求派兵支援配合,以切断褚克昌部的后路,行成东西夹击的态势。
……
1858年,滇东、滇南回民武装力量从昆明撤围散归各地之后,当时的云南巡抚即调集清军向回民进攻,回民被迫起而自卫。马德新、马如龙因个人目的没有得到满足,也乘机再次起兵,于是滇东、滇南回民武装力量又得到了发展。
1860年春,马如龙受马德新之命,率部西援杜文秀,4月底与李芳园部会合,共万余人,由南安州直逼楚雄。回民武装联军于5月3日攻克广通,5日在回镫关(广通西南)大败楚雄清军来援人马,击毙清军游击高天泽。
8日,又在小腰站歼灭楚雄清军千余人,击毙千总苏镇东。“楚雄得力将弁,无出高天泽、苏镇东右者,相继败没,兵勇夺气。”5月21日滇东、滇南回民武装包围了楚雄府城。
楚雄清军连败两仗、士气低落的楚雄清军人马无力阻挡回民武装的锐利攻势,楚雄知府杨觐向署理提督褚克昌求救。褚克昌正在进攻弥渡、红岩,无兵可派,只得尽撤镇南大营清兵赴援楚雄。
6月5日,褚克昌率军亲抵楚雄府城,马如龙、李芳园指挥回民武装力量昼夜围攻,于6月11日用地雷轰塌城垣二十余丈攻入城内。城中清军一部投降大部被歼。知府杨觐、副将庆连等被打死,褚克昌见机得快逃往镇南。
回民武装联军攻占楚雄,不但切断了楚雄清军的后路,而且由于清军官兵的父母妻子多寓居楚
雄,以致前线军心瓦解无意作战。尽管褚克昌部将杨有才、张玉柱所部清军攻占了弥渡和红岩,却无法摆脱这种不利的困境。
而此时滇西回民武装又从西面发动了强大的攻势,使清军腹背受敌更形狼狈。大理回军大都督蔡法春于1860年4月底攻陷缅宁后,即率领云州、顺宁、蒙化、缅宁回民武装二万余东下,杨德明等也率大理、蒙化回民武装八千余人,在云南县与之会合联合向弥渡、红岩等地进攻。
双方连日交战清军伤亡惨重,褚克昌得力将领张福保、杨有才、陈开榜、王有才等被打死。褚克昌慌忙从镇南回到云南县大营指挥作战,仍无法挽回败局。最后清军因粮尽兵溃,游击张玉柱、守备孙占魁率部投降大理政权,红岩、弥渡先后失守再次落入回民武装手中。