就这样,在董昭的建议下,从建安十一年(206)年底开始,曹操下令开凿人工运河,同时挖两条,一条叫平虏渠——南起今河北青县的滹沱河,北至天津静海的大清河,连通滹沱河与易水;另一条叫泉州渠——南起天津,北至今天津的宝坻,贯通古清河与潞河。两条人工运河自南向北将注入渤海湾互不隶属的水系,连接起来。
曹操征调大批民夫开凿两渠,沟通北上的水运交通。后来,由于乌桓派重兵扼守长城古北口,地势险要,易守难攻,曹操遂决定改道向东线进军,又从泉州渠向东延伸至濡水(今滦河),开凿新河渠。于是平虏渠、泉州渠、新河渠三渠相接,成为一条纵贯南北的水路运输线,用于进军作战与军需补给供应。
第二年三月,运河挖通,粮船从邺城(今河北临漳西南)出发走水路可以直达右北平郡的无终县(今天津蓟州区)。补给线的问题解决了,曹操召集手下文武开会商议进兵之事。
令曹操没想到的是,曹操刚一提出北征,就遭到多数部下的反对,反对的理由也出奇地一致,担心大军出塞远征,荆州刘表会乘虚而入,派刘备北上攻略许县。这种担忧并非杞人忧天。
几年前,曹操率军与袁尚、袁谭于冀州鏖兵之际,刘表为援救袁氏兄弟就曾派刘备领兵北伐。刘备曾一度打到距许县不远的叶县。当时曹军虽在黄河北岸但距许县并不是很远,曹操及时派出大将夏侯惇、于禁、李典出击,虽然因轻敌冒进被刘备放火烧了一阵,但总算遏制了刘备的攻势将其挡住。