连番战败之后,张弘范可谓是意气风发,在南方更是如鱼得水,而且由于他已经控制了相当一部分产粮地区,所以补给竟然也可以自给自足,这也导致了宋军更加被动。
张世杰知道这么下去一定会出大事情,想要阻止张弘范只能全力抢回陷落与他手里的粮食产地,所以便决定在焦山和张弘范再战一场。
张世杰约殿前都指挥使张彦率兵出镇江,以图控制长江南岸,并联络江万顷和江镗出兵瓜洲从江北配合,自己率水师陈兵镇江以东的焦山江面,约定三路俱进与元军决战。但没想到江万顷治下的宋军没有按时赶到,而镇江张彦拒不发兵,这使得张世杰不得不孤军深入。
张弘范在石公山居高临下指挥战斗,命万户刘深沿长江北岸绕至宋军背后,董文炳、刘国杰从焦山左右两边进击,万户忽剌直冲宋军大阵。元军乘风放火箭,宋船纷纷起火阵势顿时大乱,宋师几乎全军覆没,损失战舰七百余艘。
焦山之败使得张世杰手里的宋朝水军几乎损失殆尽,他可真的是一筹莫展,只好再次南逃,但是这个时候他手已经没有多少水军更没有战船,再想和张弘范一决高下已经是遥不可及了。
张弘范根本就不想给他们喘息之机,再次起兵直趋溧阳,遭到南宋守军的顽强抵抗,但是结果宋军损兵折将残部再次南撤,元军乘胜追击,在溧阳西南银林东坝再次打败宋军。
元军在追击途中受到南宋援军的阻击,双方立刻展开激战,开始的时候宋军是占据了不少优势,但这个时候张弘范派出了手里仅有的两千蒙古骑兵进行冲杀,阿塔海的勇猛竟然让几万宋军抵挡不住再次南逃。溧阳之战宋军损失将校七十余人,士卒近两万人,可以说是伤亡惨重。
之后元军临近要隘独松关,南宋守将张濡率兵北上阻击元军,与元军骑兵交战。宋军虽是精兵强将但只有数千人而且都是步兵,虽然奋勇冲杀,但却难以阻挡强大的蒙古骑兵,最终被再次击溃,主将张濡被杀,士兵死伤两千余人,要隘独松关陷落。
独松关陷落之后张弘范面对的就只有常州了,而这一次他命人在城南筑高台,把回回炮放在台上向城内猛轰,又用火箭射入城中,常州城内顿时一片火海。这个时候他再次命令架云梯、绳桥攻城,不到两个时辰元军攻入城内。
常州守将姚岩虽然率将士浴血奋战,终因寡不敌众,没有外援而失败。姚岩、王安节等全部阵亡,僧人万安、莫谦之长老率僧兵赴援,最终五百名僧兵全部战死。而这一战中常州抵抗的太为坚决,也让张弘范起了杀心,攻下城池之后他竟然命令屠城,最终一座大城只有七个人侥幸逃生,这件事传遍天下之后也让无数人都不敢相信。
此时文天祥的前部将尹玉率兵增援,张弘范命自己坐下大将怀都、王良臣领兵在五牧阻击宋军。战斗开始后麻士龙率先与元军交战,但由于主将张全按兵不救麻士龙战死。在元军攻击下张全退到五牧,朱华奋起抗击勉强阻挡住了元军。而此时尹玉指挥宋军回身与元军死战,元军一直以来实在太顺利,所以完全没有想到这里的宋军竟然如此凶猛,而且尹玉手里还有宋军的精锐部队重甲步兵,这一战元军损失惨重,只好暂时退回。