對陣之初,劉文秀手下大將李本高從馬上摔下,被孫軍殺掉砍頭,劉文秀軍小卻。見狀,李定國心慌。孫可望在高崗上望見此景,急揮令旗,命令諸營進擊。
李定國、劉文秀與孫可望共事多年,深知其謀多智廣,又眾寡不敵,心中生懼,商議陣前退兵。
幸虧白文選拍馬而來,在旁怒斥:“張勝已提兵往襲昆明。如果現在退兵,孫可望以精騎躡追我軍之後,士兵肯定驚潰散亡,我們不可能活著回到昆明。前進死於戰陣,難道不比後退死於追兵馬蹄之下強嗎?何況,孫可望軍中馬維興等人均與我有約,假如我們決誌而前,他們必定陣前反戈!”
見李定國、劉文秀仍舊沉吟不決,白文選大喝一聲,策馬而前,先率手下五千鐵騎直衝孫可望大陣。望見馬維興軍陣不動,白文選知道對方有心,直奔過去。馬維興軍不放一箭,忽然開陣,騰出空檔,放白文選馬隊馳入。片刻之間,二將合營,直抄孫可望後陣。他們所向披靡,連破數營。
孫可望在高崗見此情狀大驚:“馬維興與諸營都叛我啊!”其餘諸將見此驚駭,皆無鬥誌。
直到這時,見孫可望軍中旗幟漸亂,白文選、馬維興二部合力擊殺,李定國、劉文秀立刻抓住時機,率軍隊突前奮擊。孫可望軍敗如山崩,撥馬返身狂逃。
見戰場勝負已決,李定國要劉文秀與白文選等人繼續追擊孫可望,他本人率兵疾馳,回救昆明。
孫可望的部下張勝走小路,五天內即趕至昆明城下,準備攻城。城中王尚禮披掛騎馬,正欲接應,卻被沐天波騙入朝中,軟禁起來。
張勝等了半日,不見城內有人接應,隻得硬著頭皮下令攻城。欲揮令旗時,他忽然看見城內碧雞坊的門樓上高懸“飛報大捷旗”,非常納悶兒,就問城外居民那大旗是什麼意思。居民講:“李晉王在交水殺敗秦王,昨夜差人報捷,故而豎旗。”馬寶趁機說:“我們大營兵敗,李定國必派兵截我們後路,現在隻能撤退為上!”於是,張勝、馬寶等人再不敢攻城,縱兵城外大掠一番,趁亂逃走。
城中被軟禁的王尚禮聽說張勝撤走,知道事情敗露,驚慌中以腰帶上吊自殺。
張勝回撤途中,在渾水塘正遇李定國,雙方列陣死戰。由於隻有這一條退路,張勝揮兵拚死搏殺,一時間殺得李定國軍陣腳大亂。
剛經交水大戰,未及休整,又連夜趕路,李定國軍戰鬥力消耗極大,打了近一個時辰,疲態頓現,李定國屬下士兵扛不住,呈現全線潰敗之勢。
列於張勝陣後的馬寶發現情況不妙,馬上向張勝兵陣連發大炮,呐喊殺來。張勝雖是勇將,見此也不得不驚,大叫:“馬寶也反了!”拍馬就逃。
跑了一宿,張勝半路見自己的部將李承爵來迎,心中大喜,慶幸自己終於逃得一命。二人正寒暄間,忽然衝出數名兵士,把張勝擊於馬下,五花大綁。張勝大罵:“汝為部將,何敢叛我?”李承爵回道:“汝敢叛天子,又安能責我!”張勝啞口無言,被押送至昆明後,永曆帝下令送入鬧市斬首。
十月一日,孫可望逃至貴州境內,忙令留守大將馮雙禮把守威清等地要路,相約說:“如果劉文秀追兵至,可速放三炮通知我。”
馮雙禮早得到李定國讓孫可望疾逃的指令,沒過多久就點放三炮,嚇得孫可望連水也沒喝一口,攜妻兒親信以及大批金銀輜重逃出貴陽城。其實,當時劉文秀大軍離城尚遠,剛到普安。
眾叛親離之際,孫可望這個“國主”狼狽至極,行至新添,他的妻妾、輜重盡為馮雙禮手下所劫掠。到達偏橋時,孫可望隨從隻剩二十個人。路過鎮遠、平溪、沅州等地,南明守將以及他昔日手下將領皆閉門不納。到了靖州,他才得喘一口氣。
窮愁之下,孫可望有如下幾種選擇:
第一,隱退山林,與李定國講和。畢竟二人從前在一個鍋裏吃飯,他已經失勢,李定國饒他一命應該不難。
第二,招收舊部殘兵,伺機反撲。看上去雖然很難,但隨著時間的推移,仍有東山再起的可能性。
第三,最下的一招,就是向清軍投降。
孫可望選擇了最下的一招,恨恨表示:“孤不惜此數莖頭毛(指剃發),當投清營借兵,以報與李定國之不世之仇!”
孫可望最後確實狼狽,明兵追殺之下,僅與十餘人投往武岡清營,身幾不免。
不久,李定國與馬寶進兵永昌,擒殺王自奇,其餘孫可望兵將,皆束手歸誠。至此,雲南、貴州大定。論功行賞,永曆帝下詔,封白文選為鞏昌王,眾將賞爵有差,皆獲厚封。
永曆帝先前賜金簪讓他與孫可望請和的張虎,情急之下率殘兵投奔老同事劉文秀。劉文秀立刻派人把他捆綁起來,痛斥說:“天子派你去講和,你卻挑撥說是讓你用金簪行刺,真是小人!”張虎被押至昆明淩遲處死。
那個一直攛掇孫可望稱帝的方於宣,本來正在靖州一帶主持考試,所出題目有“擬秦王出師討逆大捷”等。得知孫可望敗走消息,他馬上派人送信給原被孫可望軟禁的巡按錢邦芑,說他要“糾集義旅,生擒孫可望以獻功朝廷”。不久,昆明來人把他抓住,宰相未當成,就地被人宰掉。
黔滇大定之下,永曆朝廷並無振作之相。馬吉翔與李定國手下親信金維新等人打得火熱,李定國日益受其蠱惑,疏遠正人,信任宵小,致使奸黨布列朝廷。
見此情形,有識者皆知南明國事已,大不可為。