三月十八,李靖的五千騎兵抵達了元國南境西側的草原邊緣。
十五天的迂迴行軍讓所有人馬都瘦了一圈。士卒們臉上被風沙磨出了一層粗糲的暗色,馬匹的肋骨也隱約可見。但五千人沒有一個掉隊,他們在草原邊緣的一處窪地里停下來休整。李靖下馬之後沒有歇息,第一時間派出三組斥候分別向三個方向偵察——一組去中間那股元國騎兵的駐地,一組去東面水源點,一組去西面水源點。
當晚斥候陸續回來復命。中間那股元國騎兵約兩萬餘人,駐紮在一處叫「白音淖」的湖邊,湖邊水草豐美,是元國南境最好的牧場之一。東面水源點約在六十里外,西面水源點約在四十里外,兩處都有少量元國游騎巡邏,但夜間防備鬆懈。
李靖把斥候帶回的水樣在燈下看了一眼。白音淖的湖水清澈微濁,帶著草原湖泊特有的淡綠色。他從懷中取出一隻油紙包,裡面是出發前特意從隋地帶來的幾味草藥。那些草藥本身無毒,但混入水中之後會讓馬匹腸胃不適,輕則腹瀉不止,重則四肢酸軟無力。他把草藥分成了兩份交給兩個百人隊長,讓他們分別帶隊去東西兩處水源點下藥。
「記住,只下藥,不動手。被巡邏的游騎發現了就撤回來,不要戀戰。」李靖說,「下藥之後等一天,後天夜裡動手打中間那兩萬人。」
第三天夜裡,李靖的五千騎兵從窪地出發,向白音淖方向推進。夜風從北面吹來,把草原上的草浪吹得層層疊疊,像一片暗綠色的海。騎兵們在夜色中無聲地前進,馬匹的蹄子裹了布,踩在草地上幾乎聽不到聲響。走了約兩個時辰,前鋒斥候傳回消息——白音淖的元軍營地就在前方五里處,篝火還亮著,但大部分人馬已經入睡。
李靖下令全軍分為三路。左路一千五百人從營地西側切入,右路一千五百人從東側切入,他本人率領中路兩千人從正南方向壓上去。三路同時發起衝擊,不給元軍任何組織抵抗的時間。
子時剛過,李靖親自點燃了第一支火箭。火箭升空的尾跡在夜色中格外醒目,三路騎兵同時策馬衝鋒。馬蹄踏碎了草原的寂靜,大地在馬蹄下震顫著。白音淖的元軍營地頓時炸了鍋——到處是慌亂中找不到馬匹的騎兵、被踩翻的帳篷、和來不及披甲就衝出來迎戰的士卒。大明的騎兵沖入營地之後沒有停留,一路向縱深穿插,專門往人多的地方切。
元軍的兩萬騎兵在夜間遭到突襲之後陷入了徹底的混亂。他們沒有統一的指揮、沒有成建制的抵抗、沒有有效的通信手段。有些人在黑暗中摸到了馬就往外跑,有些人在帳篷里還沒出來就被堵在了裡面,還有些人朝著白音淖湖邊跑去想從水路逃生——但湖邊泥濘的灘涂讓馬匹無法通行,跑到湖邊的人只能棄馬步行,在齊腰深的湖水裡掙扎著向對岸游。
戰鬥持續了不到一個時辰。當東方天際泛起灰白色的時候,白音淖的元軍營地已經徹底瓦解了。地面上到處是散落的兵器、被踩平的帳篷、和倒伏在草地上的馬匹屍體。元軍的兩萬騎兵被全殲,死傷約三成,其餘全部被俘。李靖讓士卒們清點俘虜和繳獲的馬匹,同時派出斥候向東西兩個方向偵察——元國東西兩股騎兵的動向需要儘快摸清。
斥候在午後帶回了消息。東面的元國騎兵約兩萬餘人,已經在得知白音淖遇襲之後拔營向西移動,估計是想跟西面的騎兵會合。西面的騎兵約兩萬餘人,也在向東移動,兩股騎兵正在向中間靠攏。但他們的馬匹出了狀況——東西兩處水源點的草藥生效了,大量馬匹出現腹瀉和腿軟的症狀,騎兵的行軍速度比正常情況慢了將近一半。
李靖聽完斥候的回報,嘴角微微動了一下。他對身邊的傳令兵說了一句:「給青龍傳信——白音淖已破,兩萬俘。元國東西兩股騎兵正在會合,但馬匹狀況很差,行軍速度減半。請他從正面壓上去,逼他們停下來。」
傳令兵上馬去了。李靖沒有在白音淖停留太久,他讓士卒們給俘虜發了乾糧和水,然後把俘虜集中交給後隊看守,自己帶著主力向東推進。兩股元國騎兵正在向中間會合,中間的距離大約是一天的路程。如果他們不停下來,會在明天傍晚前後碰到一起。但他們快不了——馬匹腹瀉導致他們的行軍速度只有正常的一半,原本一天的路程被拉長到了兩天。而青龍的主力從正面壓上來之後,他們就更沒有時間完成會合了。
三月二十一,青龍的主力在元國南境中部的一處開闊草原上追上了東面那股元國騎兵的後隊。元軍的馬匹因為腹瀉而行動遲緩,很多騎兵不得不下馬步行牽著馬走。青龍的前鋒騎兵衝上去的時候,元軍後隊幾乎沒有做出任何有效的抵抗就潰散了。青龍沒有追擊潰散的殘兵,而是繼續向東推進,把東面那股騎兵的主力壓向西方——壓向李靖正在等著他們的方向。
兩天後,東西兩股元國騎兵在草原中部的一處窪地里會合了。他們會合的時候兵力加起來還有四萬餘人,但馬匹的狀況比之前更差了。兩天的腹瀉讓大量馬匹徹底失去了奔跑能力,有些馬甚至站都站不起來。元軍的主將意識到情況不對,下令全軍向北方撤退,企圖退回草原深處的牧場休整。
但他們退得太慢了。李靖的五千騎兵已經迂迴到了他們的北面,堵住了通往草原深處的通道。青龍的主力從南面壓上來,兩路大軍南北夾擊之下,元軍四萬餘人被困在了那片窪地里。馬匹跑不動,騎兵變成了步兵,在開闊的草原上無遮無攔,只能被動挨打。
戰鬥在三月二十五的下午展開。大明的騎兵從南北兩面同時發起衝擊,元軍試圖向西突圍,但西面是連綿的丘陵和沼澤,馬匹無法通過。試圖向東突圍的部隊被青龍的右翼截住,激戰半個時辰之後潰退。整場戰鬥持續了約兩個時辰,到傍晚時分,元軍四萬餘人中有一萬餘人被殲,其餘全部投降。元國騎兵的主力在這一戰中被徹底打散,剩下的零星游騎散落在草原深處,已經無法再形成任何有效的抵抗。
李靖和青龍在窪地中央會合。兩人騎在馬上隔著一段距離對望了一眼,都沒有說話。青龍朝李靖點了一下頭,李靖也微微頷首。夕陽從西邊的丘陵後面照過來,把兩人的影子在草地上拉得很長。士卒們在清理戰場、清點俘虜、收攏馬匹,草地上到處都是人和馬的聲響。
當天夜裡,青龍在中軍帳中寫了一份軍報。內容很簡短:「元國騎兵主力已破。殲敵萬餘,俘四萬餘。元國南境已無成建制抵抗力量。臣等明日將向元國腹地推進,預計十日內抵達元都。」
軍報被快馬送往京城。朱厚照在三月二十八的傍晚收到了這份軍報。他拆開看完,把信紙放在案面上。窗外三月的晚風帶著青草和泥土的氣息湧進來,庭院裡的柏樹在暮色中安靜地立著。他站起來走到窗前,感知著北面方向的氣機——元國騎兵主力已經被打散,剩下的零星游騎在草原深處散落成一片細碎的光點,像一群被風吹散的蒲公英。他收回感知轉身走回案前坐下。案上那幅北境輿圖上的紅色箭頭已經貫穿了元國南境,箭頭末端停在元國腹地的位置。他拿起硃筆在輿圖旁邊的空白處寫了兩個字——「將定」。