唐王朝在命诸道兵急赴战场的同时,又走马换将,把丧师怯战的王晏权和令孤绹撤职,以左卫大将军马举(一说马士举)为淮南节度使,充徐州南面招讨使,以泰宁军节度使曹翔为徐州北面招讨使,屯兵于滕县(今山东滕县)、沛县(今江苏沛县)。前天雄节度使何全皞也遣其将薛尤将兵一万三千人助战,军于丰县(今江苏丰县)、萧县(今安徽萧县西北)从西北威胁义军大本营——徐州,康承训则将诸道军七万余人屯柳子之西,自新兴至鹿塘(今安徽永城南)三十里,壁垒相望,从西南进逼徐州。在官军重兵压境三面包围下,义军处境十分不利。因为义军分戍四境,兵力分散,徐州城中义军不到数千人,义军诸寨还纷纷要求增加兵力。由于应募者寡,“民多穴地匿其中”,庞勋派人“搜掘为兵”。同时,与庞勋一起哗变的桂林戍兵“尤骄暴,夺人资财,掠人妇女,勋不能制”,逐渐丧失了人心。因此,义军控制的。境内之民皆厌苦之,不聊生矣”。当时江淮地区又有旱灾和蝗虫,野心勃勃的义军将领孟敬文甚至企图取庞勋而代之。
咸通十年(公元869年)正月,官军进攻丰县,庞勋命心腹将将兵三千驰援。进攻海州的义军,因遭官军破坏桥梁的暗害和伏兵的突袭而全军覆没。进攻寿州的义军也被从淮、浙而来的官军所破,损兵数千。辛谠搬来的浙西官军携带米、盐,则在楚州(今江苏淮安)突破义军水陆防线,进入被围的泗州城。
二月,义军将领王弘立,“自矜淮口之捷”,请独将所部三万人破康承训军,得到庞勋赞同。王弘立引兵渡过濉水,袭围鹿塘寨,“自谓功在漏刻”、麻痹轻敌,在沙陀骑兵和寨中官军的反击下,义军大败,“官军蹙之于濉水,溺死者不可胜纪,自鹿塘至襄城,伏尸五十里,斩首二万余级。弘立单骑走免,所驱掠平民皆散走山谷,不复还营,委弃资粮器械山积”。为了瓦解义军,唐王朝救令“诸军破贼,得农民,皆释之”,故此后每当义军与官军作战时,有些义军就溃散。三月,康承训打败王弘立后,率军进逼柳子,与义军守将姚周“一月之间数十战”,其后康承训因风纵火,姚周弃寨撤退时,又遭沙陀骑兵追击,“自柳子至芳城,死者相枕”。姚周将麾下数十人(一说十骑)奔宿州。该州义军守将梁丕“素与之有隙,开城听入,执而斩之”。周重声泪俱下地对庞勋说:“柳子地要兵精,姚周勇敢有谋,今一旦覆没,危如累卵。不若遂建大号,悉兵四出,决力死战”,又劝庞勋杀崔彦曾,义军将领都表示赞成。
在此生死存亡关头,庞勋当机立断,接受了周重的建议。四月,庞勋杀死崔彦曾及其幕僚等,并“断淮南监军郭厚本、都押衙李湘手足,以示康承训军”,同时召开大会,对大家说:“勋始望国恩,庶全臣节;今日之事,前志已乖。自此,勋与诸君真反者也,当扫境内之兵,戮力同心,转败为功耳”,“众皆称善”。庞勋的言行说明他在残酷的斗争中逐渐认清了唐统治者的虚伪面目,毅然改正求节钺的错误,决心与敌人血战到底,因而得到了广大义军将土热烈拥护。庞勋命全城男子集于毬场,挑选丁壮,得三万人,重新制办了旗帜,组建了新军。许佶等共推庞勋为天册将军、大会明王。他谦逊地辞去了王爵。此后庞勋再也没有向唐统治者求节钺,并以极大努力领导义军顽强战斗,但为时已晚,当时整个局面已不利于义军。
由于魏博官军屡围丰县,庞勋决定首先从此打开缺口。他深夜潜入城中,纵兵围困近丰县城的一座官军营寨作诱饵,伏兵要害之地,以消灭运动中的大量援敌。另外四寨官军果然来救,被伏兵杀二千人。魏博军畏惧义军势众,“知(庞)勋自将,惊而溃”。正在围攻滕县(今山东滕县)的曹翔风闻魏博军溃散,赶紧引兵退保兖州(今山东兖州)。义军“悉毁其城栅,运其资粮,传檄徐州”,出师数日,“摧(敌)七万之众”,声势复振。
庞勋乘丰县之胜引兵西击康承洲,至萧县,又约襄城、留武、小睢等寨义军共五、六万人,准备于四月二十九日夺回柳子。庞勋的进一军事计划不幸被混在义军中的淮南败卒密告康承谰,后者立即秣马整众,暗中设下伏兵。襄城等地义军先至柳子,中伏败走。庞勋仓促引兵自三十里外奔赴柳子时,诸寨义军已败,庞勋军“皆不战而溃”。康承训倾巢而出追击,以骑兵邀前、步兵蹙后,两面夹击,义军损失数万人,“(庞)勋解甲服布桥而遁,收散卒,才及三千人,归彭城”。
马举将精兵三万,分三路北渡淮河援救泗州,他用纵火焚栅之法,打败义军,义军大将王弘立英勇战死,吴迥退深徐城,义军不得不从围攻七月之久的泗州撤围。五月,当沂州(今山东临沂)官军围攻下邳(今江苏邳县南)时,庞勋命郑镒率所部援救,郑镒见庞勋屡败、官军势强,率部投降了官军。
六月,唐王朝又诏黔中观察使秦匡谋参与围剿。马举从泗州出兵攻打濠州,占领濠州管辖的招义(今江苏盱眙西)、锺离(今安徽凤阳东北)、定远(今安徽定远东南)。义军将领刘行及在濠州城外筑寨拒守。马举用佯攻其西、猛击其东南之策,焚毁其寨,刘行及退入城中坚守。马举在城东、南、西三面掘堑,继续围攻濠州。庞勋命吴迥屯兵淮水北岸,助刘行及御敌。马举派兵攻打吴迥,义军损兵数千,营寨被平毁。唐王朝又以神策军将军宋威力徐州西北面招讨使,将兵三万屯军丰县与萧县之间。曹翔引兵相会,共同进遥徐州。
七月,康承训攻克临涣(今安徽永城东南),进拔襄城、留武、小睢等寨。曹翔占领滕县(今山东滕县),进击丰县、沛县(今江苏沛县)。
在敌人步步进逼、义军不断失利情况下,义军内部矛盾也日益暴露。一些义军叛逃,保据山林,反过来劫杀义军,其中尤以五八村最甚,叛徒陈全裕拥叛卒数千人,“战守之具皆备,环地数千里”,深为义军之患,后被康承训招降。沛县义军守将李直诣彭城计事,裨将朱玫举城降于曹翔,并在其指使下,攻占义军的丰县、徐城和下邳。庞勋兵攻打陈全裕和朱玫,皆不克而还。小校诸葛爽见庞勋势衰,遂裹胁百余人,与泗州守将阳群(一说汤群)降唐。蕲县(今安徽宿县南)土豪李兖也杀义军守将,举城降于康承训。
康承训乘机长驱直进,攻拔宿州之西的第城驿,围困宿州。宿州是义军拱卫大本营——徐州的重要屏障。义军将领张儒、刘景、张实等将兵数万,列壁相望,环水自固,以拒官军。张实向庞勋建议道:“今国兵尽在城下,西方必虚,将军宜引兵出其不意,掠宋、亳之郊,彼必解围而西,将军设伏要害,迎击其前,实等出城中兵蹙其后,破之必矣”。庞勋采纳其策,命其父庞举直和许估镇守徐州,亲率二万义军西征,力图扭转不利战局,挽救起义大业。
同年八月,康承训焚毁宿州外塞,义军退保罗城。康承训见硬攻不行,就“遗辩士以威动(张)玄稔”。宿州把守子城的义军将领张玄稔,原系徐州旧将,“尝戍边有功,虽胁从于贼,心尝忧愤”。见官军攻城甚急,宿州危在旦夕,遂夜召亲信数十人谋划投降。他派心腹张皋深夜前往康承训营联络,以便里应外合。九月,张玄稔一伙用突然袭击的诡计杀害张儒、刘景等人,开门出降,康承训兵不血刃地垂手而得宿州。张玄稔还引狼入室,向康承训献毒计道:“今举城归国,四远未知,请诈为城陷,引众趋符离及徐州,贼党不疑,可尽擒也”。他纵火焚宿州,如城陷军溃之状,引兵至符离,符离义军不知其诈,张玄稔杀守将,收兵万人。张玄稔至徐州,围而不攻,先向城上义军发起攻心战,说“朝廷唯诛逆党,不伤良人;汝曹奈何为贼城守?若尚狐疑,须臾之间,同为鱼肉矣”。潜伏在徐州城里的崔彦曾亲信原徐州故吏路审中,偷偷打开徐州“南白门,官兵入”,庞举直、许佶率领义军将士坚守子城,“拒守者三日”。在从北门突围时,庞举直和许佶不幸被追兵击杀,义军将士临危不惧,萸勇杀敌,宁愿赴水而死,也不屈膝。