建安五年七月,汝南黄巾军首领刘辟等叛归袁绍。袁绍使刘备领兵与刘辟寇略许都以南,关羽得知后从曹操处亡归至刘备处助之。曹操派遣曹仁来攻击刘备,刘备战不利于是回到袁绍处,想要离开袁绍,以连结刘表为由,带兵复到汝南,联合黄巾余党龚都,众有数千人,曹操派遣蔡阳前来攻打,被刘备所杀。建安六年,曹操亲自讨伐刘备,刘备往投刘表。刘表亲自到郊外迎接刘备,待以上宾之礼,遂屯于新野。荆州豪杰都前往归附刘备,引起刘表的猜疑,刘表暗里提防刘备。建安七年,刘表命刘备带军北上,到叶县,与夏侯惇、于禁等相拒于博望坡。刘备以伪遁之计,设下伏兵,夏侯惇、于禁中计,一起追击刘备,最终,被刘备率军打败,恰逢李典率兵前来救援。刘备因为军力过少,于是不再继续追击夏侯惇、于禁。刘备在荆州数年,自觉老之将至而功业未建,遂有“髀肉之叹”。到了建安十二年,刘备向刘表提出趁曹操进攻乌桓时偷袭许都的建议,刘表没有采纳。建安十二年,刘备前往隆中拜访诸葛亮,在三顾茅庐之后,诸葛亮向刘备献上了《隆中对》。刘表病重时,准备把荆州托付於刘备,并对刘备说:“我儿不才,荆州诸将又相继凋零。我死之后,就由你来摄政荆州。”
刘备回答道:“您的诸位儿子当然是贤明的,请您安心养病。”
有的人劝刘备应该听从刘表所言,备曰:“刘表待我不薄,如果我取代他的儿子,人们必定会认为,我待刘表甚薄,所以,我不忍心这么做。”
建安十三年(208年),曹操亲率大军南下,而此时刘表病死,刘表次子刘琮代立,遣使者投降曹操,刘备屯兵于樊城,不知道曹操军的突然到来,到了宛城才知道状况,随即率军离开,路经襄阳时,诸葛亮建议刘备攻打刘琮,可占据荆州,但刘备因和刘表同宗,不忍相夺。刘备于城外喊刘琮,刘琮因为害怕不敢出来,刘琮的部下以及很多荆州士人投靠刘备,到当阳时,竟有十余万众,辎重数千辆,日行十余里,刘备另派遣关羽乘船数百艘,让他和自己于江陵会合。有人劝说刘备:”现在应该迅速保住江陵,我们虽然人数众多,但是有士兵太少,若曹操来了,我们怎么阻挡?“但刘备说:“想要成大事必须以人为本,现在这么多人背井离乡跟着我,我怎么忍心抛下他们!”
建安十三年(208年)十二月,刘备联合孙权,与周瑜、程普率领联军大败曹操于赤壁。刘备与吴军水陆并进,追到南郡,时又疾疫,北军多死。曹公引军北归,留下曹仁守南郡。建安十四年(209年),刘备与周瑜在南郡共攻曹仁,迫使曹仁龟缩在江陵城。因江陵城坚固,一时难克,刘备又率众南征荆州南部四郡,武陵太守金旋、长沙太守韩玄、桂阳太守赵范、零陵太守刘度皆降。庐江郡雷绪率领私人武装数万人前来归顺。刘琦病逝,部属们推举刘备为荆州牧,治所设在公安县。孙权将妹妹嫁给刘备以巩固双方关系。建安十五年(210年),周瑜在江陵附近的巴丘病逝,东吴西征入蜀的计划中止。刘备趁机从孙权手中借得荆州江陵(南郡),于是据有荆州五郡。建安十六年(211年),刘璋听从张松建议,派法正邀请刘备入川襄助自己对付张鲁,法正、庞统在此时劝刘备图取益州。刘备遂留诸葛亮、关羽等守荆州,自将数万步卒入蜀,与刘璋会于涪。期间张松、法正、庞统皆劝刘备袭杀刘璋,刘备以初来到蜀地,人心尚未信服,不宜轻举妄动为由拒绝。刘璋上表推荐刘备代理大司马,兼领司隶校尉,配给刘备士兵,督白水军,令他攻击张鲁。刘备北至葭萌,驻军不前,厚树恩德以收众心。建安十七年(212年),张松事情败露被杀,刘备于是与刘璋反目。刘备依庞统提出的计谋,召白水军的杨怀到来并将其斩杀,吞并其部队。派黄忠、卓膺率军南下进攻刘璋,占领涪城。建安十八年(213年),刘璋派遣刘璝、泠苞、张任、邓贤、吴懿等在涪阻击刘备,都被刘备打败,吴懿投降。刘璋又派李严、费观统帅绵竹诸军阻击刘备,李严率众投降。刘备军力益强,分军平定各县。同时调诸葛亮、张飞、赵云等率军入蜀。张任、刘循退守雒城,刘备率军进攻,张任出击,被刘备军斩杀,刘循遂坚守不出,庞统率军攻打雒城时为流矢所中战死城下。建安十九年(214年),雒城被围近一年才被攻克,刘备乃与诸葛亮、张飞、赵云等共围成都。时刘备派建宁督邮李恢说降马超。马超来到成都,刘备命他率军屯城北,一时城中震怖。刘备于是派简雍劝降了刘璋,遂领益州牧,启用蜀中诸多人才。建安二十年(215年),孙权认为刘备已经占据益州,想要要回荆州,刘备回应说:“等得了凉州,就把荆州给你。”
孙权忿怒,于是派遣吕蒙袭取长沙、零陵、桂阳三郡。刘备于是率兵五万下公安,让关羽入益阳。同年,曹操定汉中,张鲁逃往巴西,刘备听说后一方面与孙权议和,平分荆州,另一方面派遣黄权去迎接张鲁,但张鲁已经投降曹操。曹操留夏侯渊、张郃等镇守汉中,多次入侵巴西,刘备派遣张飞与张郃战于瓦口,张郃败归南郑,刘备回成都。建安二十三年(218年),刘备率兵进攻汉中,派遣吴兰、雷铜等夺取武都,被曹洪所杀。刘备率军占领阳平关,与夏侯渊、张郃相拒。建安二十四年(219年),刘备放弃阳平关,南渡沔水,于定军山扎营,夏侯渊率军前来争取定军山,被黄忠所杀。