太元四年(379年)八月初七,朝廷任命左將軍王蘊為尚書僕射。不久,又提升為丹陽尹。王蘊認為自己是皇後的父親,不想在朝廷內任職,苦苦請求到外地去,朝廷又任命他為都督浙江東五郡諸軍事、會稽內史。
太元六年(381年)正月,孝武帝開始尊奉佛教的法度,在殿內設置了精舍,讓僧徒們居住。尚書左丞王雅上表勸諫,孝武帝不听。
在孝武帝親政的頭3年,他改革收稅的方法,放棄以田地多少來收稅的方法,改為王公以下每人收米3斛,在役的人不交稅,被稱為東晉末年的復興。但是後來孝武帝嗜酒成性,《晉書》說「醒日既少」,優柔寡斷,導致東晉政局再度陷入混亂。
孝武帝,是東晉王朝比較有作為的皇帝。在他當皇帝的24年里,晉王朝多少出現了一些振興之象,還曾經創造了中**事史上的奇跡「淝水之戰」。淝水之戰是我國歷史上著名的戰爭,發生在東晉太元八年(383年)八月。當時,前秦皇帝氐族人苻堅,在統一了黃河流域後,躊躇滿志,欲圖以「疾風之掃秋葉」之勢,一舉蕩平偏安江南的東晉,統一南北。
先是,前秦王苻堅下達詔令,開始大舉入侵東晉。百姓中每10個成年人選派1人充軍,良家子弟中年齡在20歲以下,有才能勇氣的人,全都授官羽林郎。他說︰「晉朝任命司馬昌明為尚書左僕射,謝安為吏部尚書,桓沖為侍中。以此形勢來看,凱旋的時間不會太遠,可以先行起身于家,出任官職。」
八月初二,苻堅派遣陽平公苻融督帥張蠔、慕容垂等人的步、騎兵25萬人作為前鋒,任命兗州刺史姚萇為龍驤將軍,督益、梁州諸軍事。初八,前秦宣昭帝苻堅發兵長安,將士共有60多萬、騎兵27萬、羽林郎(禁衛軍)3萬,共90萬大軍從長安南下,旌旗戰鼓遙遙相望,綿延數千里。同時,苻堅又命梓潼太守裴元略率水師7萬從巴蜀順流東下,向建康(今南京)進軍。
九月,苻堅抵達項城(今河南項城),涼州(今甘肅武威)的軍隊剛剛到達咸陽,蜀、漢的軍隊正順流而下,幽州(今河北北部及遼寧一帶)、冀州(今河北冀州)的軍隊到了彭城,東西萬里,水陸並進,運輸軍糧的船只多達萬艘。苻堅驕狂地宣稱︰「以吾之眾旅,投鞭于江,足斷其流。」這就是著名典故「投鞭斷流」的來歷。陽平公苻融等人的部隊30萬人,先期抵達潁口(今安徽潁上縣)。
東晉朝廷下達詔令,任命尚書僕射謝石為征虜將軍、征討大都督,任命徐、兗二州刺史謝玄為前鋒都督,與輔國將軍謝琰(謝安的兒子)西中郎將桓伊等人的兵眾8萬人抵抗前秦。讓龍驤將軍胡彬帶領5千水軍援助壽陽。
這時前秦的軍隊已經非常強盛,東晉京城里的人震驚恐懼。謝玄入朝,向謝安詢問應對之策,謝安一副平靜的樣子,回答說︰「已經另有打算了。」緊接著就閉口無言。謝安還命令駕車出游山間別墅,親戚朋友雲集,與謝玄在別墅玩圍棋賭博。
當時秦軍前鋒苻堅之弟苻融兵30萬首先到達潁口,秦軍初戰告捷,苻融攻佔了壽陽(今安徽壽縣),與此同時,秦軍慕容垂部攻佔了鄖城(今湖北鄖縣)。而且截斷了東晉派來救援軍胡彬的退路,將其團團包圍在硤石(今安徽鳳台西南)。苻融趕快送信給苻堅說︰「敵人少而且易捕獲,就是擔心逃跑了,請趕快派大軍過來。」苻堅見信大喜,滅東晉心切,留大軍于項城,帶輕騎8千趕到壽陽。這時候無論是苻堅或者是苻融這時都認為東晉已是刀翥之肉。于是派出原東晉大將朱序去勸降。
朱序原是東晉襄陽守將。早在太元三年(378年),苻堅派出大軍圍攻襄陽城,朱序頑強抵抗堅守了一年,朱序多次出城作戰,屢破秦軍。後來朱序部將李伯護秘密派其子送信秦軍,願做內應。苻堅派兵加緊攻城。城破後,苻堅沒有殺朱序,反留在身邊重用。
再說,朱序到了謝玄營中,將秦軍部署和盤托出。並建議,趁秦軍未完全集結,迅速出擊。謝石本來是打算堅守不戰,听了朱序的話後,便改變了作戰方針,決定主動出擊。
十一月,謝玄派廣陵相劉牢之率5千精兵開赴洛澗(在今安徽淮南東),拉開了淝水之戰的序幕。秦將梁成率部在離洛澗十里的地方,部署兵陣以等待劉牢之。劉牢之大敗梁成,斬殺了梁成以及弋陽太守王詠。又分派部隊繼絕了他們歸途上的渡口,前秦的步、騎兵全都崩潰,爭先恐後地逃向淮水,死亡的士兵有1萬5千人,抓獲了前秦揚州刺史王顯等人,全部收繳了他們的武器軍糧。
前秦王苻堅與陽平公苻融登上壽陽城觀望,只見東晉的軍隊布陣嚴整,又望見了八公山上的草木,也以為都是東晉的士兵(「八公山上,草木皆兵」的成語就出自于此),苻堅掉頭對苻融說︰「這也是強敵,怎麼能說他軟弱呢!」苻堅感到有些茫然若失。
洛澗大捷後,令晉軍信心倍增。前秦的軍隊緊逼淝水(今安徽壽縣南瓦埠湖一帶)而布陣,東晉的軍隊無法渡過。謝玄派使者對陽平公苻融說︰「您孤軍深入,然而卻緊逼淝水部署軍陣,這是長久相持的策略,不是想迅速交戰的辦法。如果能將兵陣稍微後撤,讓晉朝的軍隊得以渡河,以決勝負,不也是很好的事情嗎!」前秦眾將領都說︰「我眾敵寡,不如遏制他們,使他們不能上岸,這樣可以萬無一失。」苻堅不知是計,于是說︰「只帶領兵眾稍微後撤一點,讓他們渡河渡到一半,我們再出動鐵甲騎兵奮起攻殺,這樣就可以取得勝利」苻融也表示贊同。于是就揮舞戰旗,指揮兵眾後退。結果前秦的軍隊一退就失去控制,陣勢大亂。謝玄、謝琰、桓伊等率領軍趁勢搶渡淝水,向秦軍猛攻。苻融被殺,前秦的軍隊立刻崩潰。當初,前秦的軍隊稍微後撤時,朱序在軍陣後面高聲呼喊︰「秦軍失敗了!秦軍敗了!」秦軍有很多是強征入伍的,而且有著好多個民族,各懷鬼胎,人心本來就不穩。又剛吃了落澗敗仗,朱序這一喊,以為真的敗了,越發慌亂,爭相逃命,導致幾十萬軍隊象山崩了一樣丟盔棄甲的大潰逃。朱序乘機與張天錫、徐元喜都來投奔晉軍。繳獲了前秦王苻堅所乘坐的裝飾著雲母的車乘。又攻取了壽陽,抓獲了前秦的淮南太守郭褒。謝玄等乘勝追擊,直至青岡(今壽陽西30里)。秦軍大敗,自相踐踏而死的人,遮蔽山野堵塞山川。逃跑的人听到刮風的聲音和鶴的鳴叫聲,都以為是東晉的軍隊將要來到(「風聲鶴唳」的成語就出自于此),晝夜不敢停歇,慌不擇路,風餐露宿,凍餓交加,死亡的人十有七八。
苻堅中了流箭,單身匹馬逃到淮河以北。這時,前秦的各路軍隊全都潰散,唯獨慕容垂所統領的3萬人完整保全,苻堅帶領1千多騎兵與慕容垂會合。
謝安接到了驛站傳遞的書信,知道前秦的軍隊已經失敗,當時他正與客人下圍棋,將信放在床上,毫無高興的樣子,繼續下棋。客人問他是什麼事,他慢條斯理地回答說︰「小孩子們已經最終攻破了寇賊。」下完棋以後,他返回屋里,過門檻時,高興得竟然連屐齒被折斷都沒有發覺(這是著名的典故「屐齒之折」的出處),這年謝安63歲。謝安的實踐充分證明了孫子的名言︰「將不在勇而在謀,兵不在多而在精。」