十月,前秦的先锋苻融攻占了寿阳(今安徽寿县),并把派来增援的胡彬包围在硖石。胡彬的粮草快要用光,无奈只好暗中派人带着书信向谢石求援。不料信使在半路上被秦兵俘获,苻融马上派人向苻坚报告:“晋军现已缺少粮草,兵力不足,我们应该抓住这大好机会,立即发动进攻。”苻坚大喜,马上率轻骑8000人赶往寿阳与苻融会合,企图一举歼灭谢石率领的东晋军。然而就在他高兴的时候,他却犯了一个极大的错误:他竞选择了被俘虏的东晋将军朱序前去劝降谢石。朱序到了晋营,做了表面上的警告,劝谢石趁早归降;暗中却提醒谢石说:“趁前秦百万大军还没有全部会集,要迅速攻击。打败了他们的先锋部队,势必挫败他们的士气,这样我们就可以一鼓作气,夺取胜利了。”
东晋将领们接受了朱序的建议。十一月,谢玄派刘牢之率精兵5000人开赴洛涧(今安徽怀定县西南洛水入淮处)向秦军将领梁成发动进攻。刘牢之率部奋勇向前,强行渡河,大破秦军,斩了梁成。秦军不得不向淮水一线溃逃,而谢石、谢玄却指挥晋兵节节进逼,直逼寿阳。在深秋的寒风中,苻坚与弟弟融登上寿阳城楼远望,看到东晋军阵严整,颇具规模;转而眺望八公山,见草木摇动,以为都是东晋的士兵。身经百战,投鞭断流的苻坚这下子感到的却是莫大的惊虑与惆怅,他若有所失地对苻融说:“这也是强敌呀,谁说他们是弱旅呢!”脸上不觉露出了畏怯的神色。
就这样,东晋军与前秦军隔淝水遥相对峙。秦军先锋虽然新败受挫,但兵力仍是晋军的几倍,而且主力正不断到达,形势对晋军来说依然很严峻。东晋将帅经过精密策划,想出了一条妙计。谢玄派了使臣告诉苻融说:“你们孤军深入,却在这淝水岸边扎营布寨,这虽可使我们长相对峙,但却不利于速战速决。如果你们稍微向后退一退,在岸边腾出一块空地作战场,让我们渡过淝水,与你们一决胜负,岂不是更好的策略?”苻坚也有自己的想法,他觉得答应对手的要求也未尝不可,等晋军渡河到一半时,便可以发动铁骑冲杀,杀他个措手不及。于是下令后撤。没想到,秦军一退就乱了阵脚,朱序又夹在秦兵中大声呼喊:“秦军败了!秦军败了!”前秦大部分士兵是被强迫征来,无心与东晋作战的各族俘虏,他们早已力竭身疲,此时更是乱作一团,不可收拾。东晋军队借机大举进攻,于乱军中杀死前秦前锋主帅苻融,苻坚也被乱箭射中。秦军溃不成军,争相逃命,自相践踏,死伤遍地。不少士兵听到风声鹤唳,都认为是东晋的追兵赶到,更加慌不择路,日夜狂奔。苻坚后在慕容垂的护卫下回到了洛阳,淝水之战就这样以前秦的惨败划上了句号。