晋孝武帝太元八年( 公元383 年),前秦开始大举入侵东晋。八月,前秦王苻坚从长安出发,九月到达项城,凉州的军队才到达咸阳,巴蜀、汉水地区的军队刚沿着长江东下。阳平公苻融等率领的三十万军队,首先到达颖口。
十月,前秦阳平公苻融等攻打寿阳。十八日,攻克了寿阳。慕容垂攻下郧城。胡彬听说寿阳被攻陷,就后退守卫硖石,苻融进军攻打硖石。前秦卫将军梁成等率领五万兵众驻扎在洛涧,沿淮河布防以遏制东面的部队。谢石、谢玄等在距离洛涧二十五里的地方驻军,由于惧怕梁成而不敢前进。谢玄派广陵相刘牢之率五千精兵开赴洛涧,在离洛涧十里的地方,梁成扼守山涧部署兵阵以等待刘牢之。刘牢之径直向前渡河,攻击梁成,大败梁成,斩梁成以及弋阳太守王咏。又分派部队断绝了他们归途上的渡口。于是,谢石等各路军队,就从水路陆路继续前进。
秦王苻坚和阳平公苻融登上寿阳城观望,看到晋国的军队部署的阵势非常整齐,又远远望见八公山上的树木柴草,都以为是晋国的士兵。秦国军队紧靠淝水而列阵,晋国军队不能够渡河。谢玄派使者对阳平公苻融说:“您孤军深入,而紧靠水边摆下阵势,这是长期相持的办法,不是想快速作战的样子。如果能把阵势向后稍微移动一下,让晋国军队可以渡河,同秦军一战而定胜负不更好吗?”苻坚便说:“只是将部队向后退一点,等他们过河过到一半的时候,我们用强大的骑兵践踏他们的身躯杀过去,没有不能胜利的。”苻融也认为这样很好,于是就指挥部队向后退。
秦国军队这样向后一退,就没有办法再停止下来。谢玄、谢琰、桓伊等人率领军队趁机渡河,向秦军发起攻击。苻融骑马巡行军阵,想率领正在退却的兵士,不料马摔倒了,他自己也被赶过来的晋国士兵杀死了,秦军于是全部崩溃。谢玄等人乘胜追赶,一直追到青冈。秦军被打得大败,自己人互相践踏而死,尸体布满田野,堵塞河流。那些逃走的兵士听到风吹和鹤叫的声音,都以为是晋国军队就要追来了,白天黑夜都不敢停下来休息。也不敢走大路,只在人迹罕至的草丛中逃走,走倦了就在露天底下睡一下,加上饥饿和寒冷,死亡的人十有七八。
晋军还截获了秦王苻坚所坐的云母车,又夺取了寿阳。苻坚中了流箭,单身匹马逃到淮河以北。这时,前秦的各路军队全部溃散,惟独慕容垂所率领的三万人全部保存下来,苻坚带领骑兵一千多人赶到他那里去。慕容垂的世子慕容宝劝他趁此良机恢复燕国皇位,慕容垂说:“我往日不能被太傅所容纳,逃到了秦国。秦国君主把我当国中少有的人才看待。后来我又被王猛所陷害,无法表达自己的清白,只有秦国君主能了解我,这种恩德,如何能够忘记呢?”慕容垂的亲信党羽大多都劝他杀掉苻坚,慕容垂一概没有听从,命令把军队交给苻坚。
谢安接到了驿站传递的书信,知道前秦的军队已经失败,当时他正与客人下围棋,拿着信放到了床上,毫无高兴的神色,继续下棋。客人问他是什么事,他慢条斯理地回答说:“孩子们已经打败了贼寇。”下完棋以后,他返回屋里,过门槛时,高兴得竟然连屐齿被折断都没有发觉。