公元191年,刘备与青州刺史田楷一起对抗冀州牧袁绍,刘备因为累次建立功勋而升为平原县县令,后领平原国相。刘备外御贼寇,在内则乐善好施,即使不是身为士人的普通百姓,都可与他同席而坐,同簋而食,不会有所拣择。刘备当平原相时深得人心,郡民刘平不服从刘备的治理,唆使刺客前去暗杀。刘备毫不知情,还对刺客十分礼遇,刺客深受感动,不忍心杀害刘备,便坦露实情离去。
后来黄巾余党管亥率众军攻打北海,北海相孔融被大军所围,情势危急,便派太史慈突围向刘备求救。刘备惊讶地答道:“北海相孔融居然知道世上有刘备!”便立即派三千精兵随太史慈去北海救援。黄巾军闻知援军至,都四散而逃,孔融逐得以解围。后袁绍攻公孙瓒,刘备与田楷东屯齐。
公元194年,曹操以为父报仇为名再度攻打徐州,徐州牧陶谦不能抵挡,向青州刺史田楷求救。田楷与刘备一起前往救援,刘备自有兵千余人及幽州乌丸杂胡骑,又掠得饥民数千人,到徐州后,陶谦又给刘备增丹阳精兵四千,刘备于是又归属陶谦。而此时张邈、陈宫归附吕布,并唆使吕布攻打曹操,曹操根据地失陷,于是回兵兖州。陶谦表刘备为豫州刺史,叫他驻军在小沛。
公元195年,陶谦病重,对别驾麋竺说:“非刘备不能使徐州安定。”陶谦死后,麋竺率徐州人民迎接刘备做太守,刘备不敢接受。在陈登、孔融的再三劝说下,刘备遂领徐州。
公元196年,曹操表刘备为镇东将军,封宜城亭侯。袁术率大军进攻徐州,刘备迎击,两军在盱眙、淮阴相持。这时,吕布偷袭了下邳,俘虏了刘备的妻子。刘备回军,中途军队溃散,乃收余军东取广陵,为袁术所败,转军海西,困顿至极,得从事东海麋竺以家财助军。于是向吕布求和,吕布将刘备的妻子归还给他,刘备回到小沛。不久,刘备再度召募了万余人的军队,吕布于是率军进攻小沛。刘备战败,前往许都投奔曹操。曹操给与刘备兵马粮草,让刘备做豫州牧。其后,人称刘备为“刘豫州”。
公元198年,吕布派高顺和张辽进攻刘备,曹操虽派夏侯惇援救,但被击败。沛城最终被攻破,刘备妻子再次被掳,刘备单身逃走。刘备在梁国国界中与曹操相遇,于是与曹操联合进攻吕布,吕布投降后,刘备力劝曹操杀死吕布。其后刘备与曹操回到许都,被封为左将军。
公元199年,车骑将军董承受汉献帝衣带诏,刘备起初未敢加入。后曹操与刘备“煮酒论英雄”,曹操对刘备说:“今天下英雄,就是你跟我。”刘备心惊,筷子掉落,知道曹操难容自己,遂与董承等人同谋。恰逢当时曹操派刘备与朱灵一起攻击袁术,其后刘备进军下邳,杀徐州刺史车胄,留关羽守下邳,行使太守的职责,自己回到小沛。东海昌豨以及诸郡县多从刘备,刘备有了数万兵马,于是北连袁绍抗击曹操。曹操派司空长史沛国刘岱、中郎将扶风王忠往攻,被刘备击退。
公元200年春,“衣带诏”事发。曹操亲自东征刘备,刘备战败,关羽被擒。刘备逃往青州,青州刺史袁谭,刘备曾举荐他为茂才,率领军队迎接刘备,刘备随袁谭到平原,派人告诉袁绍,袁绍离开邺城二百里来迎接刘备,停留了一个多月,刘备被打散的士卒也慢慢的集结于此,至此经过小半生的颠沛流离,刘备在袁绍出暂时获得了休养生息。