同治年间,西宁地区回民武装在马桂源、马本源兄弟领导下形成割据势力,控制青海东部农业区与部分牧区。其武装力量以宗教组织为纽带,结合地方团练与流散兵勇,形成兼具军事防御与资源掠夺能力的集团。清廷虽于 1866 年派西宁办事大臣玉通主持军务,但官军久攻不下面临饷械匮乏困境,至 1871 年仍未突破回民武装的外围防线。
董福祥时为甘肃提督,所部甘军经左宗棠整编后成为西北战场机动主力。该部以甘肃环县子弟为基干,吸纳陕甘民团与降军,鼎盛时兵力达二十营万余人,配备抬枪、劈山炮等火器,兼具山地作战与长途奔袭能力。1872 年春,左宗棠采纳 "先剿河州,再图西宁" 策略,命董福祥率甘军自狄道(今临洮)北上,与湘军刘锦棠部形成对西宁的钳形攻势。
甘军进入河湟地区后,采取 "步步为营,清野断粮" 战术。1872 年 4 月,先头部队进至平戎驿(今平安驿),遭回民武装伏击,损失前营管带以下三百余人。董福祥随即改变策略,征发民夫修筑堡寨,每推进十里即建立补给据点,同时派遣骑兵绕后切断西宁与河州的粮道。据《甘宁青史略》记载,至 6 月中旬,甘军已控制湟水南岸的多巴、康家寨等要地,形成对西宁的南面包围。
回民武装为打破封锁,于 7 月组织万余人反击多巴营地。董福祥预先在阵地前沿挖掘壕沟,配置连环抬枪队,待对方骑兵接近时发动密集火力打击。战斗持续两日,回民武装因缺乏重武器,在清军炮火轰击下伤亡惨重,被迫退回西宁城。此役甘军缴获战马千余匹、粮食万石,初步确立战场优势。
1872 年 9 月,董福祥决定拔除回民武装在西宁外围的重要据点哆吧堡(今多巴镇)。该堡位于湟水支流沙尔湾河畔,地势高峻且囤积大量军械粮草,由回民将领黄文秀、马大头三三率五千人驻守。甘军采取 "围三缺一" 战术,以主力猛攻东西二门,同时在南侧设伏等待突围部队。
9 月 15 日凌晨,甘军以炮火摧毁堡墙北段,步兵携带云梯强行登城。守军依托街巷工事展开巷战,双方在堡内展开逐屋争夺。战至中午,董福祥投入预备队从南门佯攻,守军主力南调时,预先埋伏的骑兵从东北侧突入,切断守军退路。黄文秀在巷战中中炮阵亡,马大头三三率残部突围时遭伏兵截杀,堡内千余非战斗人员被清军俘获。战后,甘军对俘获人员实施甄别,凡参与战斗者就地正法,史载 "哆吧堡内,男丁无遗,妇孺充作营妓"。
此役后,董福祥下达 "搜剿逆党" 命令,甘军所到之处实行连坐法,凡与回民武装有联系的村寨均遭血洗。据兰州道陶模事后奏报:"自平戎至西宁百里间,炊烟断绝,积尸盈沟,老弱妇孺亦多不免。" 这种无差别镇压政策导致回民武装放弃阵地战,转而化整为零进入山区开展游击战。
1873 年初,回民武装余部在马本源带领下退入青海湖周边草原,与当地蒙古、藏族部落结成同盟,试图利用牧区广阔纵深消耗清军。董福祥则采取 "分路追击,焚荒断牧" 策略,将甘军分为三路:中路沿青海湖南岸追击,东路封锁大通河谷,西路切断通往柴达木的通道。
3 月,中路军在哈喇库图尔(今共和县)遭遇蒙古骑兵伏击,后勤辎重被劫。董福祥亲率精锐骑兵驰援,在青海湖畔展开遭遇战。清军凭借火器优势击溃蒙古骑兵,随后对周边游牧部落实施报复,焚烧帐房千余顶,斩杀牧民数百人。此行动导致原本中立的蒙古王公倒向回民武装。
清廷内部对董福祥的高压政策出现不同意见。陕甘总督左宗棠虽肯定其军事效率,但也指出 "剿抚兼施方为长久之计",建议在军事打击同时展开招抚。然而董福祥认为 "西北民性彪悍,非威不伏",继续推行 "杀降夺地" 政策。1873 年 5 月,副将何得彪在柴达木边缘截获一支准备归附的回民商队,为邀战功将三百余人全部屠杀,仅留数人传信。此举引发甘军内部争议,部分将领认为 "杀降必遭天谴",但董福祥以 "临阵专擅" 为由压制反对声音,继续推进清剿。
1873 年 8 月,甘军完成对西宁城的合围。回民武装因长期断粮,城内出现人相食景象,马桂源被迫开城投降。董福祥违背此前 "献城免死" 的承诺,将马桂源、马本源等首领凌迟处死,并纵兵三日洗劫城区。据《西宁府续志》记载:"城破之日,火光烛天,府库官署悉遭焚毁,富户巨室被掠一空,积尸遍于街巷。"
攻克西宁后,董福祥实施 "徙民实边" 政策,将回民武装控制区的成年男性分批迁往甘肃、新疆偏远地区,妇女儿童则分配给官军为奴。同时设立 "善后局",强制收缴民间兵器,推行保甲制度。但甘军纪律败坏问题在此阶段集中爆发,士兵公开抢劫民财、强占民宅,导致地方官府与民众对清军的抵触情绪加剧。兰州道陶模在给军机处的密信中直言:"董军所过,比之贼匪尤甚,百姓畏军如虎,避之不及。"