191年7月,刘备打着助战剿贼的旗号,誓师出征。这次出战,刘备掏出了全部的家底,总共3人的精锐步卒与总共5人的骑兵部队。至于名义上的领地济南国,刘备也依靠十余天的时间,紧急征集了2乡勇,依靠他们和留下的5步卒防守。
刘备的5骑兵中,有2是公孙瓒资助的战马,剩下的3则是刘备东平西凑的下等战马或是一般较好的马匹组成的杂牌。不过即便是杂牌,这些军队也不能小觑。
刘备从青州济南的祝阿县内攻入冀州平原郡。因刘备兵力稀少,驻扎在平原边境的袁绍大将袁谭犯了轻敌的过错,尽出7大军与刘备战于黄河南岸。
没有想到刘备暗中将两部骑兵分开,2精锐由张飞率领藏在黄河岸边几米高的草丛中,3游走于袁谭军阵周边进行骚扰。袁谭以为靠刘备的实力,能有3马军已经是极限,拖住刘备的马军后,下令大军加速包围刘备部队,想要一口气吃掉刘备军队。
就在袁谭变阵,即将包围刘备大军,阵列变得薄弱的时候,张飞带着2精锐马军从远处草丛中杀出,直击袁谭大军的右侧。
本来若是一般人带队,还极有可能冲不破袁谭的军阵,可惜这张飞着实悍勇,仅靠一人之力,便杀掉了前来阻截的3余人大盾手,在袁谭阵中凿出一个缺口,然后率着骑兵冲破袁谭军阵。
袁谭军阵无法自如运转的时候,刘备果断下令大军从缺口处下手,截断袁谭军队。袁谭的大军顿时被一分为二,双方各自为战,加上张飞不时率着马军在周边偷袭,袁谭逐渐不支,只得丢弃掉一半被包围的士卒,带着另一部分逃亡黄河边上,乘船逃往高唐。
因兵力过少,刘备击败袁谭大军之后,无力追击,只得放任袁谭逃往高唐。等刘备处理掉袁谭丢下的2余人的时候,这才发现整个黄河南岸的船只都被袁谭焚毁。没办法的刘备只好在黄河南岸扎营,令人前去其他地方搜寻船只渡河。
191年月,袁绍大将颜良、文丑二人在白马义从的打击下损失惨重,二人听取军中军师审配意见,将大军合二为一,据巨鹿死守。
同时,袁绍也在广川被公孙瓒三战击败,损失1多士卒,只得退守枣路,等待邺城补充援军。
月中旬,刘备率领大军渡过黄河,经过7日苦战,击破高唐县,然后张飞驱逐着袁谭溃军冲击平原。一日之间,高唐、平原两城皆下,平原北方郡县孤立无援,很快便投降刘备。而袁谭则是率领平原郡溃军坚守在清河郡鄒县,防止刘备军突入清河郡,切断北方粮道。
眼见粮道受到威胁,而且清河郡内大军都被抽调走,以袁谭现有的不过万人的大军,牵制住刘备没有问题,若是想要阻止公孙瓒南下基本不可能,于是袁绍连忙命大军布下迷阵,率军从枣路逃亡甫宫,然后一路南逃至嵩莹,接着令巨鹿的颜良文丑二人率军南下,抛弃巨鹿,合兵一处在任县与公孙瓒决一死战。
公孙瓒见袁绍一逃便是几百里,认为袁绍已经技穷,且选择从青河郡直奔邺城明显不是好选择,途中无法保证粮道安全性,于是公孙瓒命大军一路追击袁绍,同时令公孙越带兵南下,在任县会和,企图一鼓作气一次性消灭袁绍大军,尽取冀州。
9月中旬,袁绍率5大军吞屯兵任县北2里,公孙瓒率军36余人与袁绍大军对峙。
公孙瓒见袁绍军中只有3人左右的精锐,其余军队都是新招的百姓,于是令白马义从从旁协助,他自己亲率剩余军队结阵与袁绍军对战。
早已知晓公孙瓒大军中白马义从厉害的袁绍调集了近万人专门防备公孙瓒的马军,可这种方法还是未取得很大的成果,仅仅只是限制住了白马义从的发挥。
在杀伤了公孙瓒3人左右的军队后,袁绍自己也差不多损失了近5左右的军卒。而随着士卒不断损伤,严密的阵势开始出现漏洞,损失不断增加,袁绍只得下令退兵。
两日后,袁绍抛弃任县,退守襄国县,驻守在界桥北,防备公孙瓒过界桥。公孙瓒又率着手下3大军追到界桥。