孙传芳经过江西、福建、浙江连续的失败,基本部队残破不堪,势难在宁沪立足,同时又看到张宗昌对江南这块肥肉,虎视眈眈,索性做个顺水人情,把上海地盘送给直鲁军。
一九二七年二月二十三日,白崇禧去嘉兴视察前沿阵地。接上海送来的情报,说孙传芳军仍在松江附近的沪杭路第三十一号铁桥布防,但孙部主力已退往江北。
二月二十七日,蒋介石电杭州何应钦、白崇禧指示攻取上海及南京战略,其方针为:东路军应俟程潜指挥的江右军由芜湖向南京攻击前进后才重新采取攻势。届时何应钦指挥第十四、第十七两军及第一军一部由宜兴、丹阳出镇江,切断沪宁路敌军的补给线,白崇禧指挥第二十六军,第一军第一、二两师及先遣队由嘉兴直取上海。
白崇禧对于上海,本有不战而占领的计划。直鲁联军于二月二十四日进驻上海后,该军第五路总司令兼第八军军长毕庶澄(1894—1927,追随张宗昌,1926年授澄威将军。1927年4月4日,持有张宗昌手谕的褚玉璞用电话召毕庶澄到省城商谈军事。毕只带卫队团长马文龙赴济南,刚下火车,就被褚玉璞的伏兵乱枪击毙。)曾派代表到杭州向白崇禧洽谈归降条件。白氏疑此乃缓兵之计,虚与委蛇,仍积极做攻沪准备。后苏联军事总顾问加仑将军致电驻东路军前敌总指挥部的苏联顾问尼基京将军说:“我们如不及时进军上海,罢工工人有被镇压的危险,务必说服白崇禧将军趁敌人混乱之际,开展对上海的攻势,总司令的进军令随后下达。”(《加仑将军在中国》,第六十页,中国社会科学出版社。)
三月十九日,白崇禧开始进攻松江和吴江。松江、黄浦南岸为周荫人残余部队驻守,一被攻击即向上海退却。第二十六军周凤歧部跟踪追蹑,出得胜港,取明星桥,和正面进攻的第一军第二师刘峙部夹击坚守第三十一号铁桥的毕庶澄军。二十二日,于克松江城中,将毕庶澄部四混成旅解决,残敌北逃,第二十六军追击到南翔。第一军第二师追到青浦、昆山,再解决一个混成旅,这表明直鲁联军毫无战意,不堪一击。
当毕庶澄从上海调兵往松江增援时,第一军第一师薛岳部已由便衣队做向导,由明星桥进袭上海,先遣队、别动队在内部响应,三月二十一日,遂不战而占领上海南部龙华。毕庶澄军在上海北面沪宁铁路总站的部队为数尚多,中国共产党领导下的总工会为了迎接革命军的到来,计划不失时机地采取一种非常行动。三月二十一日午,在中共领导人周恩来领导下,上海工人第三次武装起义爆发了。他们先袭击警署夺得枪支,然后向北站毕军进攻,毕军见事急,向吴淞调来救兵。可是铁路被工人纠察队破坏,救兵乘坐的火车在中途倾覆。这些救军从翻车中出来,神魂颠倒,误以为北站已被革命军占领了,遂发炮向那里轰击。北站毕军又误会救兵是革命军,以牙还牙,彼此对打了二十小时。上海工人纠察队看到事不宜迟,乘机进攻北站,来势之猛,毕军难于抵御。恰巧二十二日上午,白崇禧率第一军第一师的先头部队到龙华,即派一部兵力协同工人纠察队进攻。一个冲锋,毕军便全部瓦解,缴械投诚。毕庶澄孑然一身,逃到上海租界去了。这一天,南市举行了五万人的大会欢迎国民革命军克复上海。二十三日,又开一个全市二十万人的欢迎大会,庆祝光复上海。