在曹操攻打冀州的时候,袁谭见有了靠山,便全力进攻袁尚。袁尚大败,袁谭“遂并其众”,势力有所扩大。曹操一看,觉得不能让袁谭这么发展下去了,于是找了个借口与袁谭断绝关系,然后进攻袁谭。
这时天气寒冷,水面结冰,运粮船被冻在河里。曹操征用当地百姓凿开冰面,以便船只往来。但是当地人一听到命令就跑了,没人来凿冰,气得曹操下令“捕而杀之”。百姓们躲不下去了,就来到大营求见曹操,请求赦免。曹操说,不杀你们,则号令不行;杀了你们,我又不忍。你们还是跑吧,藏好了,别让士兵抓到。百姓们垂泪而去,“后竟捕得”,史书上没说抓到之后怎样处理的,但以曹操号令之严,估计是凶多吉少。
建安十年(公元205年)正月,曹操对退守在南皮的袁谭发起了总攻。战斗从早晨打到中午,还是没能攻下南皮。曹操亲自击鼓助威,激励士卒,最后终于城破,“斩谭,诛其妻子”,至此冀州全境都归了曹操。
曹操攻击袁谭的时候,比方的少数民族——乌桓借机不断骚扰,曹操于这年的八月亲征乌桓。