苻坚依仗着雄厚的兵力,不等各路人马到齐,就命令苻融向晋军发动猛烈进攻。十月,苻融把寿阳城攻破了。胡彬率领水军还没有到达寿阳,在半路上听到这一消息,被迫把部队退到一边是河水、一面是高山的硖〔xia霞〕石(今安徽省凤台县西南),在这个地势险要的地方扎下营来,专等谢石大军的到来。苻融占领了寿阳以后,一面派兵围攻硖石,一面派梁成率领50000军队控制了洛涧(即洛水注入淮水的地方,在今安徽省定远县西南),阻止从东面来救援胡彬的晋军。谢石命令晋军在离洛涧25里的地方,驻扎下来。
谢石的大军不能前进,被围困在硖石的胡彬水军就孤立了,眼看军粮就要吃光,情况十分紧急。为了迷惑敌人,胡彬命令士兵们拿着簸箕,天天在河岸上扬簸沙土,使远处的秦军看见,好像是在簸米,表示自己的军粮还很充足。同时他给谢石写了一封告急信,说:“现在敌军势力很大,这里的军粮已经吃完,情况十分紧急,恐怕再不能和大军相见了。”他把密信交给一个亲兵,叫他乘夜突围出去,送给谢石。不料这个亲兵在途中被秦军捉住,告急的密信也给秦军搜去了。苻融得到这个情报,立即派人连夜到项城去报告苻坚,说:“现在晋军人少粮尽,正是打败他们的好机会,应该马上发动进攻,不能让他们跑了!”
苻坚来到寿阳,和苻融经过一番计议,认为有可能使东晋不战而降,决定派朱序到晋军去劝降。朱序本是汉人,曾做过东晋的梁州刺使,在襄阳守卫战中战败被俘,他“身在秦营心在晋”,仍存报国之心。朱序来到晋营不但没有劝降,反而把他所知道的秦军的一切情况,都秘密地告诉了谢石、谢玄,并向两位将军提出破敌的建议。他说:“苻坚这次拼凑了全国兵力,共有90多万人。如果这些军队一齐到来,的确很难对付。但是目前秦军大部分人马还在行军途中,凉州的兵刚刚赶到咸阳;秦军在前线的兵力并不怎么雄厚。晋军如果要发动进攻,现在正是大好机会。你们只要派一支精兵打败秦军的前锋,挫伤它的锐气,秦军就会全线崩溃。”朱序说完,就匆匆赶回寿阳去了。
狂妄自大的苻坚正在为攻占项城沾沾自喜,听到苻融的密报,更是心花怒放。当天晚上,苻坚把大军留在项城,只悄悄地挑选了8000名轻骑兵,亲自带领,不分昼夜地赶往寿阳,想要出其不意地捉住谢石,一举灭亡东晋。他离开项城的时候,还对项城的将士们下了严厉的命令:“谁敢泄露我去寿阳的消息,我要把他的舌头连根拔掉!”
刘牢之接到命令,就在当天夜里,带领5000名北府兵,借着星光,向洛涧出发。听说要向秦军发动攻击,北府兵人人摩拳擦掌,战斗情绪异常高昂。晋军来到离洛水10里路的地方,刘牢之接到前哨的报告说:梁成的部队,在洛水对岸扎下了营寨,黑压压的一大片,但是一点动静也没有,好像已经进入梦乡了。刘牢之立即向部队下了急行军的命令。北府兵5000人马涉水而过,像猛虎下山一样,勇猛地冲破了秦军的前沿阵地,呐喊着杀进了敌人的大营。正在酣睡的秦兵还没有来得及弄明情况,许多人就被晋军杀死了。梁成从梦中惊醒,听到帐外的厮杀声,吓呆了。他慌慌张张地爬起来,披上铠甲,翻身上马,正想抵抗,只见刘牢之一马当先,手执长枪,直向梁成的营帐冲来,正好和梁成相遇。两人大战了十几个回合,梁成胆怯手软,渐渐招架不住,被刘牢之一枪刺于马下。
起先,谢石以为苻坚的主力大军都已经来到寿阳,本想采取守势,疲劳秦军;后来和谢玄、谢琰等仔细研究了朱序的密报,决定乘苻坚的主力还没有到来,首先消灭梁成的部队,扫除前进障碍,解救硖石之围。于是,他派勇将刘牢之率领5000名北府兵,去袭击驻扎在洛涧的梁成部队。
秦军失去主将,更加无心抵抗,纷纷向后逃跑。晋军乘胜追击,一直追到淮河边上。刘牢之马上分兵截断秦兵退路。秦兵被追得走投无路,抢着跳进淮水里逃命,许多人都淹死在水里了。经过一夜的激烈战斗,秦军死伤达15000人,洛涧被刘牢之的北府兵收复了,前秦在淮河的封锁线被打破了。
谢石、谢玄听到洛涧大捷的消息,一面命令刘牢之继续沿淮河西进,解救硖石之围;一面亲自指挥各路兵马,乘胜进到淝水东岸,驻扎下来,和对岸苻坚的秦军隔河相望。在胜利的消息鼓舞下,晋军士气更加高涨。一场激烈的决战即将到来。