龙湾之战后,陈友谅和朱元璋双方进行了无数次拉锯战:陈友谅手下猛将张定边重新收复安庆,接着朱元璋又派兵攻下安庆;陈友谅的江西行省丞相胡美投降朱元璋,把龙兴先给朱元璋,朱元璋将龙兴改名为洪都府,没多久洪都又被陈友谅占去,两个月后,朱元璋的侄儿朱文正、赵德胜与邓愈再次把洪都抢回来。
陈友谅吸收上次失败的经验教训,没有再贸然率领大军和朱元璋决战,而是等待机会,这个机会终于在至正二十三年(1363)被他等到了。
陈友谅和朱元璋进行拉锯战的时候,北方韩林儿、刘福通领导的红巾军的处境越来越不妙,起初北方红巾军形势一片大好,曾经横扫中原,占领汴梁、开封。汴梁是宋朝故都,韩林儿、刘福通既然假托宋后,对汴梁自然是非常重视的,攻下汴梁之后,就把汴梁作为都城。然后刘福通兵分三路伐元,红巾军达到全盛时期。然而红巾军内部派系较多,人员龙蛇混杂,经常互相攻伐,譬如东路军的首领毛贵,非常有才能,一路攻克青州、沧州、济南等地,甚至一度打到元大都附近。同为红巾军将领的赵均用因为自己地盘丢了,就跑到山东投靠毛贵,没多久竟然杀害毛贵,毛贵的部将又回师攻打赵均用,将赵均用杀死,东路军从此一蹶不振。
元朝陕西平章政事察罕帖木儿见山东红巾军自相残杀,趁机领兵攻打大宋的都城汴梁。这个察罕帖木儿统兵有方,是元朝的柱石,非常有名,他有个同样非常有名的养子,叫扩廓帖木儿,汉名叫王保保,这个养子其实是他的外甥。另外王保保有个更有名的妹妹,汉名叫赵敏。
在察罕帖木儿强大的攻势下,刘福通守不住了,只好带着数百骑保着韩林儿逃往安丰,察罕帖木儿趁机又连下红巾军山东的大片地区,接着围攻益都,红巾军奋起抵抗,在益都和元军展开血战。没多久察罕帖木儿被降将田丰所杀,察罕帖木儿的外甥王保保继续围攻益都,刘福通领兵救援,也大败而归,益都最终被攻陷,田丰等人都被王保保杀掉。
至正二十三年(1363)二月,张士诚见安丰空虚,让弟弟张士信、大将吕珍率大军围困安丰,连攻多日,城中粮食吃光,已经到了人吃人的地步,甚至有的士卒吃人油炸的泥丸充饥。刘福通见安丰难以坚守,派人到应天,求救于朱元璋。朱元璋接到求救信后,犯了一个天大的错误,这个错误差点把他自己的整个基业葬送掉。
刘福通的使者到应天告急,朱元璋准备带兵去救应安丰,理由有两个:第一,名义上自己还是听命于小明王韩林儿的,自己是大宋的吴国公,不能不救大宋的皇帝;第二,如果安丰失守,北方红巾军将会土崩瓦解,少了北方这个屏障,自己也会直接面临元军的威胁。刘基坚决反对,理由也有两个:第一,陈友谅在长江上游虎视眈眈,一直在等待机会,现在倾军去救援安丰,如果陈友谅乘虚攻打应天怎么办,何况除了陈友谅,还有一个张士诚呢;第二,韩林儿名义上是朱元璋的皇帝,如果朱元璋把韩林儿救出来了,怎么安置他,还让他继续当皇帝吗?
朱元璋没听从刘基的意见,仍然带着徐达、常遇春等猛将一起去救安丰,到了安丰,常遇春三战三胜解了安丰的围困,又击败了张士诚过来救援的左君弼军。但是战斗结果有点意外,朱元璋还未到安丰的时候,刘福通就已经战死了,所以只救出来小明王韩林儿,朱元璋有点哭笑不得,居然真的像刘基预料的那样,自己劳而无功,却得到一个烫手的山芋。朱元璋无奈,只好把韩林儿送到滁州继续当皇帝。皇帝自然要有宫属妃嫔,韩林儿在汴梁,后宫加百官一共有好几千人,汴梁沦陷,都成了察罕帖木儿的俘虏,同时还有大量的符玺、印章、宝货也都成了察罕帖木儿的战利品,朱元璋既然还认韩林儿当皇帝,就要给他置办这些。
朱元璋去救安丰的同时,陈友谅就开始行动了,他等这个机会等太久了,终于朱元璋走错一步。陈友谅为这次进攻准备了两年多,在这两年多时间里,陈友谅又建造了几百艘更为恐怖的大船,这种船高数丈,分三层,上边用来跑马作战,下边是划船的船夫,并且上下都分割开,说话都听不到,一旦打起仗,即使上边已经败了,下边的人不知道上边的情况,还是会照样安心划船。为报上次龙湾惨败之仇,陈友谅这次是举国而来,号称六十万大军,一路浩浩荡荡,顺江而下。
这是千载难逢的好机会,朱元璋远在安丰,应天空虚,如果陈友谅率领舟师直接攻取应天,或许历史就会改写,但是陈友谅也犯了个天大的错误,这个错误不但让他错失良机,而且万劫不复。