北伐军由天官副丞相林凤祥和地官正丞相李开芳指挥,率领三万多太平军将士从扬州出发,经仪征、六合、浦江分批北进,势不可挡,连克滁州、定远、临淮关、凤阳、怀远、亳州,6月10日,兵临河南归德城下。归德城守军见太平军来势凶猛,不敢抵抗,遂打开城门向太平军投降。太平军开进归德城,缴获铁炮一百余门,火药两万余斤,乘胜前进,再克宁陵、陈留、朱仙镇,直指河南重镇开封,北伐军不攻开封,向西经郑州、过荥阳、占领了汜水关。汜水关是黄河南岸上的重要渡口,太平军征得大小船七十余只,船工们像见了亲人一样,男女老幼尽心尽力,日夜不休地帮助太平军渡过黄河。紧追在北伐军后面的江宁将军托明阿和新调来堵截太平军北伐的黑龙江都统西陵阿、贵州提督善禄督率三路清军陆续追赶过来。北伐军前方有大河挡道,后方有清朝三路大军围追,情势万分危急。太平军尽管日夜抢渡,但人多船少,来不及渡过黄河的一万多太平军将士大有被敌军围歼的危险,决定不再渡河,转而南下,避开敌人,一路向南拼杀,占密县、取长葛、围许昌、过郾城,连克西平、确山、罗山、麻城,于8月10日攻占安徽英山,到达太湖与西征军会合。
渡过黄河的一万多太平军将士于7月2日攻占温县,8日包围怀庆府。怀庆府的守军紧闭城门,据守城池,固守待援。咸丰皇帝接到怀庆府被包围的消息,大为震惊,急下旨令协办大学士、直隶总督讷尔经额为钦差大臣,理潘院尚书恩华和江宁将军托明阿为帮办,统领大军赶往怀庆,全力围剿太平军,务必要把这股太平军全部消灭在怀庆,不得有一人漏网。7月10日,托明阿、西凌阿、善禄三路大军星夜兼程渡过黄河赶到怀庆城外。为了彻底消灭北伐军,同一天,咸丰皇帝又下旨,令胜保为钦差大臣亲率劲旅六万余人赶往怀庆。怀庆城被北伐军围的水泄不通,城内坚守的清军和百姓严重缺粮缺水缺柴,人心惶惶,援军虽然一批批赶来,却被北伐军打得落花流水,不能靠近。城上的官兵眼巴巴地望着远处援军的旗帜,渴望着援军赶快冲过来解救他们,给饥肠辘辘的官兵带来粮食。再望城下,太平军把怀庆城围的铁桶一样坚固,还不时地向城内发起猛烈的攻击,怀庆府随时都有破城的危险。 太平军围困怀庆城将近两个月,咸丰皇帝把直隶、山西、河南、山东等省的清军大批大批地调过来,集结在怀庆城四周,围堵太平军,清军在山西、直隶等省的布防已是空虚。林凤祥、李开芳等太平军将领见调动敌人军队的目的已经达到,9月1日,林凤祥指挥太平军趁着夜幕有秩序地悄悄撤出阵地,向西沿着太行山崎岖的小路进入了山西,一夜间,一万多人的太平军将士无声无响地撤退了,撤退的无影无踪,一个人都看不见了,怀庆府突然解了围,讷尔经额急忙写奏折派快马赶送京师。咸丰皇帝接到奏折,非常高兴,急忙下旨嘉奖各路将领剿匪有功。林凤祥、李开芳率领北伐军将士如猛虎、如蛟龙、如一股巨大的洪流无坚不摧,一路上连克垣曲、绛县、曲沃、平阳、洪洞、潞城,向东破涉县、占武安,直指直隶重镇临洺关。此时,喜的皇上嘉奖,得胜而归的钦差大臣纳尔经额正得意洋洋地率两万八千凯旋之师回防直隶,凯旋归来的清军官兵刚刚进驻临洺关。太平军抓住这个有利时机,趁敌不备,向临洺关突然发起猛烈的攻击。清军官兵立足未稳,突遭打击,惊慌失措,混乱不堪。太平军将士杀入敌营,一个个勇猛无比,只杀的清军将士溃不成军,死伤无数,活着的纷纷落荒逃窜。 临洺关大捷后,北伐军挥师北进,攻克沙河、赵州、晋州、深州,10月13日包围了直隶首府保定城。太平军攻打保定城的消息不时地传到京师,北京城上至咸丰皇帝,下至京内的大小官员,乃至平民百姓无不惊慌,京官请假,富民外迁,往日繁华热闹的街巷,如今已是十院九空了。咸丰皇帝更是惊恐万状,为确保北京的安全,连连紧急下旨,命令钦差大臣胜保即刻率部赶往保定,速解保定之围;再调蒙古王爷僧格林沁率部火速赶赴保定与胜保所部全力围堵太平军,务必要把北伐军全部消灭在保定地区,绝不准有一个长毛漏网,胜保和僧格林沁率部火速向保定集结。林凤祥见清军火速向保定集结,来势凶猛,直隶东部兵力已经空虚,于是率部避实就虚趁势东进,占献县,克沧州,直扑天津,直接威胁到了北京城。北京城内大乱,吓坏了咸丰皇帝,他一面准备出逃,一面连连向胜保和僧格林沁下旨,言辞异常严厉。为保证京师的安全,胜保和僧格林沁在咸丰皇帝的严令之下,率部急速尾随堵截太平军,以比北伐军多了十几倍的清军,终于把北伐军分割包围在静海、独流和杨柳青三处。 几个月来,经过无数次的攻打,无数次的坚守,无数次的突围,秋去冬来,自幼生活在南方的太平军将士更加不习惯北方寒冷的气候,再加上北伐军初到当地,群众没有发动起来,吃饭穿衣成了巨大的困难。北伐军在外无援军,内缺粮草、火药的艰难条件下,虽屡出奇兵,重创清军,却始终没有能力摆脱当前的困境。由于清军的重重围困,使得北伐军的粮食极度短缺,将士们连续的饥饿和征战,伤病减员越来越多,怎么办?怎么办?总不能就这样被困死这里,饿死在这里吧,林凤祥、李开芳等将领焦急万分,他们详细分析了当前所面临的形势。李开芳说:“与其在这里被困死,不如冲出去,哪怕与敌人拼个你死我活,或许还有条生路。”有将领即刻附和说:“只要能多杀一个妖贼,替天行道,就是战死,也死的足矣。”
又有将领为难地说:“只是这么多伤病的兄弟,可怎么办?”
林凤祥大手一挥说:“一个也不丢下,全部带走,这样行动虽然慢一些,我们可以步步为营,决不舍弃一个兄弟。”
战略计划制定好后,北伐军将士分别从静海、独流、杨柳青突围出去,队伍经大城、河间、直取献县,继续向南突围。1854年3月9日,尾追上来的清军再次把北伐军包围在阜城附近的村庄,面对敌军重兵重围,饥寒交迫的北伐军将士只有一层层密布树栅,固守待援。
在天京的洪秀全得知北伐军被清军围困的消息,立即组建北伐援军,放弃扬州的守卫,命令夏官丞相曾立昌、夏官副丞相陈世宝、冬官副丞相许宗扬率领扬州守军两万余人急速北上增援,北上援军攻正阳关、战颍上,克蒙城,占永城,3月17日,渡过黄河进入山东,占领丰县。山东巡抚从德州率部赶赴兖州堵截,胜保从阜城分兵赶往曹州堵截。北伐援军进入山东,势如破竹,横扫金乡、巨野、阳谷、冠县,3月30日占领山东与直隶交界处的重镇临清,眼看着就要和北伐军胜利会师了。清军前方的战报频传,战败的消息不断传到京师,震惊了大清朝野,咸丰皇帝无可奈何地连连惊呼:“将毙之虎又添双翼了!”正当北伐援军乘胜前进的时候,情况陡然发生了巨变,在临清停止了前进,一直到4月23日北伐援军全部向南撤去。原因是北伐援军沿途攻城掠寨,吸收了大量的人参加队伍,不仅有劳苦的百姓,也有各路土匪,还有投降的清兵和投降的府县官员,有些人因腰缠金银,不愿再战,有些人拉帮结派,抗拒指挥,造成队伍在组织上和思想上的混乱,总指挥曾立昌被部下杀害,副总指挥陈世宝战死沙场,部队越发不可收拾,一些人不愿意再战,趁机鼓动部队南撤。
坚守阜城的北伐军将士英勇抵抗着清军的围攻,日夜盼望着已经到了临清的援军早日打过来,5月2日,北伐军向南艰难突围,突破敌人的重围,占领了连镇。围追过来的清军又把北伐军包围在连镇。为了尽快接应到北伐援军,北伐军将领再次开会研究,会议研究决定,由李开芳率马队两千余人突围出去,一路南下去接应援军,其余人马由林凤祥指挥在连镇固守,拖住清军。经过了充分的准备,5月28日深夜,李开芳率领马队冲出连镇,冲破敌人设下的重重围堵,一路向南,经宁津、吴桥、德州、陵县,5月30日占领了山东省西北部的高唐城,此时,李开芳得到了北伐援军南撤的消息。胜保率部紧追上来,把李开芳所部包围在高唐城。北伐军兵分两处,被清军分别包围在连镇和高唐。 经过了九个多月的坚守,北伐军将士经历了常人难以想象的艰难困苦,誓死保卫连镇。1855年3月7日,曾格林沁指挥清军大局进攻连镇,林凤祥率全体太平军将士奋起反击,英勇杀敌,在极其惨烈的战斗中,林凤祥身负重伤被清军俘获,押解北京,被清廷凌迟处死,所部近万名将士全部战死。僧格林沁消灭了连镇的北伐军,连夜移师高唐,与胜保部合兵一处,更加紧对李开芳率领的马队进行围攻。3月10日,李开芳和马队的将士在高唐听到敌军攻破连镇的消息,心情万分悲痛,也感到了自己的处境愈加凶险,必须想法突出重围才有活路。3月17日夜,李开芳率马队英勇拼杀,突破敌人的一道又一道防线,到达茌平县境内的冯官屯,再被追来的清军包围。北伐军坚守冯官屯,清军虽重重包围,却屡攻不克,急坏了僧格林沁和胜保。直到4月30日,僧格林沁终于想出一条毒计,命令部下开挖渠道,掘开运河大堤,引水代兵,准备水淹冯官屯。李开芳了解到僧格林沁的毒计,不愿坐以待毙,决心寻找机会带领太平军将士突围出去,首先派兵佯攻西南方向的清军兵营,吸引僧格林沁的注意力,同时亲率二百多名敢死队绕着村外的围墙隐蔽外出,抢占清军炮台,率部突围出去。清军人多势众,没有想到李开芳竟敢出来偷袭,自然就没有防备。太平军敢死队突然冲杀过来,杀得守卫炮台的清军措手不及,顿时大乱,纷纷逃命。太平军敢死队占领了清军的炮台,不料后面还有高高的围墙,围墙之外还挖有深壕,敢死队无法突围出去,只得返回村内坚守。 为了防止太平军再次突围,尽快消灭这股长毛乱匪,平息在北方的战乱,僧格林沁命令清军掘开运河大堤,决堤的运河洪水如脱了缰的野马奔腾而下,顿时淹没了冯家屯,漫漫洪水把冯家屯四周变成了一片汪洋,太平军所藏的粮食被水淹,火药也已湿透,村内百姓四散逃命,太平军没有了容身之处。面临着严峻的形势,李开芳下令士兵赶制木筏,准备与清军血战冲出冯官屯,可是中途遭到了清军火炮拦截,很难冲出去,北伐军弹尽粮绝,处境更加艰难。在清军的诱降下,有太平军将士为了活命,向清军投了降,情势严峻到了极点,李开芳想到了诈降这条妙计,决定派先锋官黄敬文带领一百多名太平军士兵出营假意向清军投降,与僧格林沁商议招降太平军的事宜。僧格林沁看透了李开芳的诡计,将计就计,假装接受太平军投降,让士兵送信给李开芳,约定好了招降日期,又在招降地区四周暗暗埋下伏兵,准备活捉李开芳。李开芳接到清军的信件后,以为僧格林沁已经中计,遂率全副武装的太平军将士乘木筏离开冯官屯,准备与黄敬文所部里应外合,乘敌不备,杀了清兵,冲出敌人的重围。李开芳率部来到招降地点,看到清军几十门大炮都对准这里,清军从四面八方围过来,北伐军将士无力抵抗成了清军的俘虏。李开芳无助地大哭,跪地求饶,请求僧格林沁高抬贵手释放被俘的北伐军官兵,他们是无辜的,万般罪责由自己一人承当。僧格林沁率部不战捉住了太平军悍将李开芳、黄恣端、黄敬文、谢金生、谭友桂、韦名傅、曹得相,把他们押送北京,向皇上邀功请赏。七位太平军悍将在北京被凌迟处死,其余北伐军将士在冯官屯全部被清军斩杀。