313年,晋愍帝即位,以司马睿为侍中、左丞相、大都督陕东诸军事,命其率兵赴洛阳勤王。当时,司马睿正开拓江南,根本无意北伐。祖逖进言道:“晋室之乱,并不是皇帝无道,百姓造反,而是藩王争权,自相残杀,给了夷狄可乘之机。如今北地百姓备受蹂躏,都有奋起反击之志。大王如能命将出师,让祖逖等人为统领,江北豪杰必定会望风响应,沦亡人士也会欢欣鼓舞。如此,也许可以申雪国耻。”司马睿虽不愿北伐,却也不便公开反对,于是任命祖逖为奋威将军、豫州刺史,但却只拨予千人粮饷、三千匹布帛,让他自募战士,自造兵器。
司马睿的消极态度,并未动摇祖逖的北伐决心。祖逖率领跟随自己南下的宗族部曲百余家,毅然从京口渡江北上,并在大江之中,用力拍击船楫,立誓要扫清中原。他在渡江后,暂驻淮阴,起炉冶铁,铸造兵器,又招募到士兵二千多人。当时,兖豫一带有豪强张平、樊雅,占据谯城,聚坞自保,有兵数千人,只是在名义上臣服于司马睿,接受其授予的官职。张平部下还有董瞻、于武、谢浮等十多支小部队,各有数百人。
祖逖攻占谯城后,终于在豫州站住脚跟,打通了北伐的通道。桓宣则率部返回。不久,石虎围困谯城,王含又遣桓宣来救。石虎闻听桓宣前来,撤军而退。桓宣于是留在谯城,协助祖逖征讨不肯归附的坞堡武装。
319年,祖逖出兵征讨陈川。石虎则率五万大军救援,结果被祖逖击败。他洗劫豫州,带着陈川回师襄国,并留部将桃豹戍守蓬陂坞。
320年,祖逖派韩潜镇守蓬陂坞东台,桃豹退据西台。两军对峙四十余日后,祖逖设计令赵军以为晋军兵粮充足,挫其士气。他又在汴水设伏,尽夺石勒运给桃豹的军粮,逼得桃豹退守东燕城。祖逖命韩潜进占封丘,压逼桃豹,自己则进屯雍丘(治今河南杞县)。
击退桃豹后,祖逖又多次出兵邀截赵军,使石勒在河南的力量迅速萎缩。河南境内有赵固、上官巳、李矩、郭默等割据集团,各据一方,经常兵戎相见。祖逖遣使调和,示以祸福,晓以大义,使赵固等人都服从自己的统一指挥,成功收复黄河以南中原地区的大部分土地。
当时黄河沿岸还有一些坞堡主,迫于后赵兵势,不得不臣服于石勒,送子弟到襄国为质。祖逖理解他们的处境,有时还会派出小股部队,伪装抄略这些坞堡,以表明他们并未归附晋朝,消解石勒的疑心。诸坞感恩戴德,经常帮助北伐军刺探情报。祖逖因此在战场上始终处于主动地位,屡破赵军。