乾隆十二年(1747年)4月,张广泗调集3万大军,计划兵分西南两路进剿大金川,“一由川西入攻河东,一由川南入攻河西”。西路军又分四路,南路内再分三路,各路定于6月28日同时并进,期以一举告捷。清军各路均以当地臣服的各土司的土兵在前,以绿营兵随后。各路初战报捷进展顺利。但纵深入叛乱之地后,山高路险,碉卡并立,叛军恃险抵抗,清军处处被动挨打,几乎寸步难行,而且损兵折将。张广泗以兵3万尚少,要求清廷再增援。乾隆十三年(1748年)4月,清廷又命大学士讷亲前往督师,并起用已被革职的老将岳钟琪以提督衔随行,增兵督剿。讷亲位高气盛,惯于纸上谈兵,一至前线,“限三日克噶耳崖,将士有谏者,动以军法从事,三军震惧,极力攻击,多有损伤。讷自是慑服,不敢自出一令,每临战时,避于账房中,遥为指示,人争笑之,故军威日损。有3000军攻碉,遇贼数10人哄然下击,其军即鸟兽散”。讷亲初至军营即下令三日内攻克噶尔崖,结果清军大败,总兵任举,参将买国良等战死。此后,讷亲不敢再专权,军事全交张广泗办理。而张广泗对清廷派讷亲为经略来督师,已是心有不悦。见讷亲吃败仗威信全无更是看不起他,“轻讷不知兵而事权出己上,阳奉而阴忮之,诸将无所禀承,率观望不前”。清军高级将领之间互相推诿,将相斗气,军心涣散。张广泗想在讷亲面前露一手,打个漂亮仗以煞讷亲的威风。于是张广泗用良尔吉为向导,不料良尔吉是莎罗奔派遣的奸细,他暗中将军情通报给莎罗奔,莎罗奔对清一举一动都了如指掌,清兵四处奔波,四处受叛军袭击,损失严重。“故兵老气竭,株守半载,无尺寸功”。乾隆闻讯十分震怒,将张广泗斩首,赐讷亲自杀,然后又派大学士傅恒为经略。清廷平叛大金川之乱的大军人数已达4万之众,还有京师八旗禁旅在内,竟然不敌大金川的3000兵力,乾隆实难甘心,遂命傅恒为经略将军,兼四川总督,增兵再战。经过一番研究,十四年(1749年)正月,傅恒上疏乾隆,分析了清军屡战屡败的原因。说以前因为讷亲不懂用兵之道,而张广泗又被奸人所愚,用“以卡逼卡,以碉逼碉之法”,实为下策。现在与诸将商议之后,决定大兵调齐,即“同时大举,分地奋攻,而别选锐师旁探其道,裹粮直入,逾碉勿攻,绕出其后,即以围碉之兵作为护饷之兵。番众无多,外备既密,内守必虚,我兵即从捷径捣入,则守碉之番各怀内顾,人无固志,均可不攻自溃”。由于吸取了教训,傅恒也害怕再有杀头之祸,故此制定了较为切合实际的作战方法,从而得到了清政府的认可。傅恒调集清兵3.5万人,采用了岳钟琪的进军方略,兵分两路。由于清兵改变了战术,连克叛军碉卡,军队士气大振,什么道路艰险等困难自不在话下。清军旗开得胜,叛军则节节败退,然而叛军仍依据一个个高耸的山头与清军周旋。清廷在金川已用兵两年,劳师糜饷,损兵折将,杀大臣讷亲、张广泗,革大将哈元生、苳芳,用尽全力却难以平叛,乾隆不想把战争继续下去了,命傅恒撤兵,在谕旨中说:“朕思蕞尔穷番,何是当我王师?经略大学士傅恒乃中朝第一宣力大臣,顾因荒微小丑,久稽于外,即使擒渠扫穴,亦不足以偿其劳!”然而傅恒认为大金川土司的势力已消耗殆尽,平叛指日可待,仍请进兵,乾隆不许,傅恒只好作罢。当时,岳钟琪所率的清军前锋已抵达莎罗奔的老巢勒乌围,莎罗奔惊恐万状。莎罗奔父子尚不知清廷已下令撤兵回朝,当时见清军势不可挡,而打入清军中的奸细又被傅恒处死,情报失灵。眼见清军就要踏平勒乌围,莎罗奔只得放弃抵抗。他从前曾隶属于岳钟琪部下,随之一起入藏平叛,这时就向岳钟琪求情,岳钟琪当即立断,趁叛军尚不知清军已撤军的消息,亲率13骑驰入敌军营中,可谓英雄虎胆。莎罗奔见岳将军威风凛凛不减当年,急忙带着随从“稽颡膜拜,衷甲持弓矢迎”,“请奉约束,顶经立誓”。莎罗奔发誓归还侵占的土地,供傜役,献凶犯,纳军械,归兵民。朝廷采用了宽大政策,莎罗奔的叛乱活动被赦免,仍为土司。这样,清廷在决定正式撤兵之前,得以兵不血刃,平定了大金川。
再战大小金川自大金川土司莎罗奔乞降之后,四川藏民聚集地平静了10多年。大小金川两地仍由各自土司管理,土司之间相互争斗,时起战乱,问题并未彻底解决。乾隆二十五年(1760年)5月,大金川土司莎罗奔病故,由其侄郎卡承袭土司之职。郎卡野心勃勃,经常出兵骚扰侵掠邻近土司领地。四川总督阿尔泰下令劝阻,但郎卡仍“侵邻境不已”。阿尔泰多次令各土司围攻大金川,但心力不齐,无济于事。乾隆三十一年(1766年),阿尔泰奉清廷之命征调与大金川土司邻近的“九土司”之兵进行会剿。阿尔泰希图息事宁人。郎卡见大军得至,表示接受朝廷的调停,并将其女嫁给小金川土司泽旺之子僧格桑为妻,并要求清廷颁给他土司新印。阿尔泰自以为是,认为大小金川联姻将有利于战乱平息,因此同意了郎卡的一切要求。实际上,这样反而使“有夙怨,不甚联络”的大小金川土司开始“姻党联结”,互相联合起来,并且“附近18家土司推两金川为雄长”。大小金川的联合打破了这里原有的政治均势,使清廷以番制番,相互制约的政策难以执行。
1771年(乾隆三十六年),莎罗奔之孙索诺木诱杀革布什扎土司,小金川僧格桑也领兵进攻邻近的鄂克什以及明正两土司,于是战乱又起。索诺木是郎卡的第四子,在郎卡病死之后承袭了大金川土司的称号,他年轻气盛,欲继郎卡当年未竟之业,逐渐吞并周边邻近土司。小金川土司也闻风效尤,两者相互勾结,并公然与清廷所派援军对抗。清廷认为小金川较大金川为弱,又无险可守,易于攻破,所以决定先平小金川,后平大金川。三十六年(1771年)10月,乾隆宣布了出征讨伐小金川的理由:“小金川以内地土司敢作不靖,暴侮邻疆,弁髦国法,此而不声罪致讨,朝廷威令安在?况抚驭番蛮,怀畏自当并用,若于梗化之人不大加惩创,则懦弱几无以自存,而犷悍者必效尤滋甚,渐至徼内土酋跳梁化外,何以绥靖边圉?”乾隆帝决心平叛小金川,调兵1.6万余名,分三路进剿:令四川总督阿尔泰率兵7000名出南路,攻约咱;令总兵福昌率兵1700名出西路,向山神沟进攻;令提督董天弼率兵5300名为中路,攻达围。清军初战不利,南路阿尔泰兵抵打箭炉长达半年,却按兵不动,一无所获。乾隆盛怒之下将阿尔泰赐死,又撤换了作战不力的将领,命大学士温福由云南赴四川督师,以尚书桂林代阿尔泰为四川总督,再度令其率兵进讨;战局逐渐被扭转。开始时,清军连夺关隘,但小金川土司僧格桑及时得到了大金川土司索诺木的援助之后,反败为胜,屡败清兵。乾隆三十五年9月,黑垄沟一战,薛琮所率3000名官兵几乎全军覆没。温福和桂林率兵先后入川后,温福由汶川出西路,桂林仍沿阿尔泰走的路线由打箭炉出南路,两路夹攻小金川。南路副将薛琮恃勇轻进,在黑垄沟被番兵包围,由于道路艰险曲折,清军无路可走。薛琮派人向桂林求援,然桂林却按兵不动,导致了薛琮战死,全军陷没的惨败。这时,清廷又下令温福为定边将军,阿桂、丰伸额为副将军,令其攻大金川。当清军逼近小金川土司僧格桑的老巢美诺时,僧格桑携带卫兵妻妾逃往大金川,撇下其父老土司泽旺。清军把泽旺缚献京师,又传檄大金川土司索诺木交出僧格桑,索诺木拒绝。于是温福率兵进逼大金川。大金川地理位置更加险峻,从前讷亲、张广泗屡遭失败,故温福大军也受到了严峻的考验。索诺木“全力抗守,增垒设险,严密10倍于小金川”,清兵分六路进攻,但当地叛军采用以往的战术,遍筑碉卡抗拒清兵,温福明白攻碉卡得不偿失,但他又别无计策,“为人刚愎,不广谘方略”,又重蹈了张广泗的复辙,采用以碉逼碉的办法,令清军就地筑碉卡多达数1000个,结果2万士兵都分散在各个碉卡内,兵力反倒不足了,与大金川的番兵相持不下。1773年(乾隆三十八年)夏,温福屯兵于大金川之东的木果木,“日与苳提督无知辈高宴”,结果索诺木出兵切断清军的粮运,发起了疯狂的反扑。叛军猛攻清军木果木大营和各碉卡中的清军,枪声四起,叛军一涌而出,内外鼓噪,清军军心大震。叛军先夺清军炮局,枪如雨发,温福乱了方寸被飞弹击中身亡,清军见主帅阵亡,霎时四散,“师遂大溃,我兵自相践踏,终夜有声。渡铁锁桥,人相拥挤,锁崩桥断,落水死者以千计”。木果木一战,又有4000名清军官兵战死。
清廷自然不甘心就这样失败,乾隆帝重又布署了军事力量,命阿桂为定西将军,丰伸额、明亮为副将军,征调健锐营、火器营和索伦兵参加战斗,大大增强了进攻的力量。
三十八年(1773年)10月,阿桂率西路军2万余攻鄂克什、底木达、布朗郭宗等土司的叛乱地区;明亮率南路军2万余攻小金川土司的巢穴美诺;丰伸额率北路军1.5万人,由绰斯甲布前进。总督文绶坐镇四川省城,督造劈山等炮运送前线。清军人多势大,几路齐头并进,而且供给及时,转战五昼夜之后,清军抵进美诺,收复了小金川,小金川土司及叛军早已逃往大金川。阿桂主张乘胜进兵大金川,乃奏请朝廷。乾隆帝也认为四川藏民土司恃险反复抵抗朝廷,清军已经耗费了极大的兵力和财力,所以非大举深入平定不可。于是朝廷先斩了泽旺,以示平定叛乱的决心,然后令阿桂等将领扫穴犁庭,以除后患。
阿桂率大军誓师之后,决定分三路讨伐大金川。三十九年(1774年)正月初十,三路清军同时出发:阿桂一路从谷噶了口出发,攻战巴拉克;明亮一路从河北马奈出发,攻战恩底博堵木城等处;丰伸额一路由卓克采出发,攻占凯立叶。清军三路大军分别从东路、西南和西北并进,声势浩大,所向披糜。怎奈大金川地形险恶,层峦叠山,崎岖不平,加上叛军重重筑碉,层层设卡,战斗极为艰苦,清军行动十分缓慢。但由于清军士气高昂,见碉夺碉,遇卡攻卡,节节进攻,击破敌垒无数,与叛军激战数百次,直到7月份才逼近大金川土司索诺木的老巢勒乌围。
盛夏,清兵围攻勒乌围之外围屏障逊克宗垒,这一仗打了近半年之久。根据《清史演义》中的记载,勒乌围前面皆山,番兵据险扼守,第一重名博瓦山,第二重名那穆山,最是险峻。清军猛博三昼夜,方杀上博瓦山,占了第一重门户。休息两日,又进军那穆山,阿桂仍令清军分前后进攻,数日不克。只见那穆山上守兵分布得密密层层,防守甚严。几路清军会集之后,并力猛攻仍是不下,山下边最高峰有两个极为显眼的战碉,清军选出600名敢死队,乘黑夜猱升而上,趾顶相接,直至黎明时,攀上绝壁到达山顶。守卫石碉的番兵以为清军从天而降,吓得魂飞魄散。西面山峰竖起了大清旗号,顿时整个番兵人心大乱,山下的清兵再次猛攻,杀上山腰,第二重门户又破。清军攻破了番兵重兵防守的逊克尔宗官寨之后,纵火烧毁四周村落200余间,索诺木的老巢乌勒围就在清军眼前。索诺木为保自身安全,毒死小金川土司僧格桑,向清军献尸请降,阿桂拒绝,索诺木无从乞和,只有令部下极力防守,拼个鱼死网破。
时值秋末冬初,天气阴寒,雨雪霏霏。清军只好收兵。过了来年又得等到冰雪消融之后,清军才能在这险峻之地出兵讨伐。清军又转战了三四个月才到乌勒围。四十年(1775年)7月14日,阿桂军与明亮军会师围攻乌勒围官寨。乌勒围靠山临河,四角有战碉,墙垣坚固,内藏大量火药枪弹,坚不可摧。据记载,“其官寨碉坚墙厚,西临大河,迤南有转经楼,与官寨相犄角,木栅石卡,长里许,其东负山麓,有崖八层,层各立碉,各路败回之敌,咸聚守之”。清兵先攻破栅卡,清扫外围,断其犄角,又毁桥断其逃逸之路,然后集中火力,用火炮猛攻石碉。其间炮声隆隆,惊天动地,敌营一片混乱,索诺木兄弟5人表示愿意降清,但阿桂仍不允,清军继续猛攻,中秋底清军终于攻下索诺木的老巢。然而索诺木带着残兵败将已经逃到噶尔崖。阿桂统领的清军自入川讨伐叛逆以来。至此已经历了2年,途中历尽艰苦,他恨不得立刻踏平噶尔崖,1776年初(乾隆四十一年),清军包围噶尔崖,切断与周围的一切通路,叛军负隅顽抗直至弹尽粮绝。2月,索诺木走投无路,与其祖父莎罗奔及家族部众2000余人出降。乾隆帝数日后在京师御午门收受索诺木兄弟及其它叛乱头目,将罪大恶极的莎罗奔、索诺木等凌迟处死。其余叛者家属,或斩或绞,或永远监禁,或充发为奴。封阿桂为一等诚谋英勇公,丰伸额本袭公爵,加赏继勇字号,明亮封一等襄勇伯,其余将官各有封赏。
大小金川土司叛乱平定之后,清廷设成都将军专管该地文武官员,下令番民递发,信奉黄教,派兵驻屯。随后在大小金川设立懋功厅,驻同知管屯务。从此,大小金川之地名不复存在。大小金川地仅千里,兵仅万余,然官兵数万,苦征5年,耗银7000万余两,用兵之难甚于平定准、回二部,皆由于地险碉坚,气候多变之故。清军缺乏对山地、碉堡之类的作战经验,一些将领或按兵不动,或硬拼硬打,以致消耗人力、财力巨大。好在清廷及时调增了健锐营等精锐部队,发挥了冲天炮的攻坚之威,终于取得了胜利,当地从此进入了一个新时期。