程学启率领水陆军队一万多人,与刘铭传商量后决定收复苏州。攻下花泾港以后,收降了太平军的守将,驻扎在潍亭。七月,李鸿章自己作为统帅,率领部队攻克了太湖厅,并向苏州进发。李鸿章先命令刘铭传攻打江阴,太平军的猛将陈坤书调集了湖南、湖北、山东等四股十多万人的部队,合力来支援江阴。李鸿章、刘铭传亲自窥探敌人的军情,发现太平军的营垒大小罗列,如棋子一般,西起江滨,东到山口,于是很快确定作战部署,展开猛烈进攻。太平军抵抗得特别厉害,两军相持不下。之后由于城中出现了内鬼,开城投降,江阴才被收复。
此时程学启另外驻扎在苏州附近,连日拼死作战,前前后后取得了几十场胜利。太平军在宝带桥、五龙桥、蠡口、黄埭、浒关、王瓜泾、十里亭、虎邱、观音庙等地的十几处堡垒,全都被攻破。而郭松林的部队,同样在新塘桥取得大捷,斩杀太平军两名头领,死伤一万多人,夺得数百艘轮船,太平军水师的实力被大大减弱。李秀成闻讯后悲愤难当,痛哭流涕,不能自已。自此,淮军的威名开始响彻天下。
太平军遭受重挫之后不久,李秀成试图大举反攻,命令他的部将集合了无锡、溧阳、宜兴等地的部队八万多人,战船一千多只,从运河口出发;而亲自率领几千人的精锐部队,占据金匮支援苏州,相互策应,和清朝官兵连续交战几次,互有胜败。同治二年(1863年)十月十九日,李鸿章亲自督军,以程学启、戈登为先锋,进攻苏州城,经过激烈的苦战之后,击破了苏州的外城,李秀成和谭绍洸等率军退入内城,坚决死守,宁死不降。随后,清朝官兵水陆并进,从三面合围苏州城;城中的粮食很快就吃完了,被围太平军的人心也开始慌乱起来。李秀成的副将郜云官等人,心中疑虑,生了二心,于是私下与程学启联系,请求向清朝官兵投降。在这样的情况下,程学启便和戈登亲自乘坐小舟,到达苏州城北的阳澄湖,与郜云官等人签订了降受约定,让郜云官杀死李秀成、谭绍洸,献上两人的首级,事成之后,承诺封赏他二品的官职。由于有戈登在其中作为担保人,所以郜云官等人毫不怀疑。然而郜云官不忍心杀害李秀成,最后答应杀死谭绍洸,而后离开。
李秀成已经对他的这一阴谋有所察觉,然而事已至此,没有办法,便在十月二十三日的晚上趁着夜色逃出苏州城。二十四日,谭绍洸因为有事召见郜云官,郜云官和猛将汪有为心存忧惧,便准备先下手,于是见到谭绍洸后,就马上将其刺杀,并乘其不备灭其亲信部队一千多人,紧接着打开城门向清军投降。二十五日,郜云官等人献上了谭绍洸的首级,请程学启入城检验。这些投降的太平军将领的职衔如下:
一、纳王郜云官 二、比王伍贵文
三、康王汪安均 四、宁王周文佳
五、天将军范起发 六、天将军张大洲
七、天将军汪环武 八、天将军汪有为
当时这八名将领所属的部队在苏州城中还有十万多士兵,声势汹汹。程学启之前承诺过事成后给他们总兵、副将等职位,于是此时他们要求程学启履行约定。程学启仔细观察了这八个人,全都心狠手辣、狼子野心,担心以后难以约束。于是和李鸿章密谋后,在指挥的舰艇上设大宴款待他们,等号炮一响,事先埋伏好的士兵就冲出来将他们杀掉,还杀掉了他手下抵抗的一千多人,其余的部下都投降了。苏州平定以后,李鸿章凭借战功而被授予太子少保。
先前这八个太平军将领考虑投降的时候,戈登做了他们的担保人。现在听说李鸿章食言的消息后,戈登大怒,想要杀掉李鸿章来惩罚其罪行,于是亲自携带了短枪到处寻找李鸿章。李鸿章躲了起来,不敢回到大营。几天之后,戈登的怒气渐渐消去,此事也算作罢。
[按语:李鸿章在这件事情上是有愧于良心的。斩杀降者,本来就不该是君子所为,更何况投降前有约在先,并且还有人来做担保!所以这一举动,李鸿章有三点罪过:一是杀降者,违背了公理;二是违背条约,自食其言;三是欺骗戈登,有失朋友信义。戈登对他此举咬牙切齿,痛恨不已,乃至于想要持刀割其腹以泄心中愤懑,不也在情理之中吗?虽然李鸿章或许是有鉴于之前苗沛霖、李世忠的事,而有一些不得已,然而李鸿章生平喜欢耍小智谋、小伎俩,也由此可见一斑。]
苏州的成功收复,实乃清政府平定江南最关键的战役。先前是曾国荃、左宗棠、李鸿章各自分别带领一支孤军东下深入敌军重地后,彼此之间不能够联络和策应,因而显得势单力薄,局面也非常危急。苏州的大捷之后,李鸿章建议对整个战局进行统筹,希望军队能够乘胜进入浙江地区,与曾国藩、左宗棠两路军队互相接应,合力起来大举进攻,这是清朝官兵取得最终胜利的第一要素。十一月,刘铭传、郭松林、李鸿章进攻无锡,很快攻克了下来,捉拿了太平军将领黄子隆父子并将其斩首。而后,李鸿章把他的淮军分为三大部队:其中甲队由自己率领;乙队由程学启率领,进入浙江,拿下平湖、乍浦、澉浦、海盐、善嘉,逼近嘉兴府,左宗棠的浙江军队,此时也与他相互策应,协同作战,进入杭州地区,攻下余杭县,多次击败太平军;丙队则由刘铭传、郭松林等率领,与常胜军共同进攻常州,取得大胜,并收复了宜兴、荆溪,抓获了太平军将领黄靖忠。李鸿章又命令郭松林进攻溧阳,守军投降。
当时太平军的将领陈坤书,拥有十万多的军队,驻扎在常州府,摆开阵势从清朝官兵的背后展开攻击。李鸿章与刘铭传进行抵挡,但由于敌军的进攻势头太盛,清军没有成功。陈坤书又悄悄派兵深入江苏腹地,出没在江阴、常熟、福山等县,江阴、无锡因此而戒严,江苏以西受到极大震动。李鸿章于是命令刘铭传独自应对常州的战局,而急召郭松林放弃金坛,昼夜火速赶回,去增援苏州。又命令李鹤章紧急回到无锡防守,杨鼎勋、张树声等人率领一支军队扼守在江阴青阳、焦阴,阻断太平军的归路。当时太平军对常熟包围得越来越紧,官兵连日苦战,也只能勉强支撑。太平军又合力包围无锡,李鸿章绕城坚守,几乎陷入极其危险的境地。几天后,郭松林的增援部队到来,大败太平军,无锡之围才得以解除。郭松林也因此被授予福山镇总兵。
先前程学启包围嘉兴(同治三年正月起),进攻非常猛烈,但城中的守兵,士气也很高涨,两军的伤亡都很惨重。二月十九日,程学启激励并鼓舞将士,想要迅速攻下嘉兴,于是身先士卒、冲锋陷阵,翻越浮桥,带领部队爬上云梯,强行登城,与太平军展开肉搏战。城墙上的敌军奋力死守,战场上弹丸如雨。忽然一颗流弹飞来,击中了程学启的左脑,程马上就倒在了地上。部将刘士奇见此情形,当机立断,代替主将统领军队,率先登上城墙,攻入嘉兴城。此时,士兵们都怒气满怀,勇气百倍,蜂拥而上,而潘鼎新、刘秉璋等,也从水陆并进,于是很快便将嘉兴攻下。
程学启受伤之后,躺在床上治疗了二十多天,始终没有好转,于是在三月十日去世,朝廷给予他“忠烈”的谥号。李鸿章为此则痛哭流涕。
嘉兴府被收复以后,杭州的太平军的气焰受到了极大打击,便于二月二十三日(十九日收复嘉兴),趁夜色从北门逃脱。左宗棠的部队于三月二日进入杭州城,到此苏军和浙军(李鸿章的军队和左宗棠的军队)的联络完全打通,清军的兵力开始集合壮大。