劉邦出身農家,為人豁達大度。秦朝建立後,出任沛縣泗水亭長。後因釋放刑徒,亡匿於芒碭山中。
陳勝起義後,集合三千子弟響應,攻占沛縣,自稱沛公,投奔反秦義軍首領項梁,任碭郡長,受封武安侯。
劉邦從屬項梁一個多月後,項羽也攻下襄邑也還至薛縣。當陳勝死亡的消息被證實,項梁把彆將全都召回薛縣,采納範增的建議,擁立戰國時楚懷王的孫子熊心為楚王,仍號楚懷王,定都盱眙。
擁立楚懷王後,項梁率軍北上救援齊魏,在亢父、東阿等地大破秦軍。
這時齊軍因內部矛盾而撤還,隻有楚軍追擊秦軍。在這期間,劉邦率領曹參、周勃等人與章邯的車騎部隊交戰,將其擊退,平複蒙邑、虞縣、爰戚縣、東緡縣、栗縣、齧桑縣、宛朐縣、單父縣等大量秦軍占領的魏國城池,史稱“定魏地”。
項梁下令楚軍分軍,以劉邦、項羽為帥,率楚軍一部攻城陽。劉項二人率軍攻下城陽(即成陽,今山東菏澤市東),屠之。
然後追擊秦軍至濮陽東,再次大破秦軍。秦軍這時得到增援,軍勢再次振興,據守濮陽,放水環繞城池。劉項二人於是繞過濮陽,轉攻定陶(今山東定陶)。定陶未攻下後,又向西攻打雍丘(今河南杞縣)。曹參大破秦兵,斬殺三川郡的郡守李由,並俘虜秦侯一人。
之後,劉項二人回攻陳留,未能破城。這時章邯大破項梁於定陶,項梁戰死。
劉項二人大驚,在商量後決定放棄陳留,還軍東歸。劉項二人分兵,項羽軍駐彭城西、呂臣軍駐彭城東,而劉邦軍駐碭縣。
項梁之死,使諸侯震怖。而秦軍更是挾戰勝餘威常追亡逐北。章邯經過連番勝利,認為楚國已不足慮,於是北上進攻趙國,攻下邯鄲後把民眾都遷徙到河內,並毀掉邯鄲的城牆。而趙軍退守巨鹿,章邯率軍進圍趙王歇與趙相張耳於巨鹿。
楚懷王把都城由盱眙遷至彭城,將呂臣與項羽的軍隊合並起來自己統領。封劉邦為武安侯,升任碭郡長(郡守),統率碭郡兵馬;項羽為長安侯,任魯公。
經過一番調整之後,楚國局勢穩定下來。劉邦此時已統籌整個碭郡舊魏地區兵力,其地位實際比項羽的縣公(縣令)要高。
與此同時,被困於巨鹿的趙王歇與張耳遣使至楚向楚國求救。楚懷王答應救趙。但為了分散秦軍力量,決定派一支部隊西向直接攻秦。楚國北路軍以宋義為主將,西路軍以劉邦為主將。約定誰先入關中,誰就是關中王。
當時由於秦軍兵勢正盛,楚國上下皆不看好西征,誰都不願意領軍西征。懷王身邊的老將們認為唯獨劉邦向來寬厚,是有德行的長者,適合“扶義而西”,減少西進阻力,能更好地不動用暴力讓秦國父老歸順,於是任命劉邦為西征軍統帥。
而項羽則因為叔父之死,比較激憤,積極要求隨同劉邦西征。但所有老將皆以項羽為人“僄悍滑賊”及“所過皆殘滅”不利於西征為由拒絕了項羽的要求,讓他擔任北路軍的次將北上救趙。
劉邦軍往西攻城略地,一路收集陳勝、項梁的散卒。取道碭縣到達成陽縣,與杠裡的秦軍對壘相持,劉邦率領曹參、樊噲、灌嬰、傅寬、郭蒙 等與秦將王離交戰,大破其軍。接著,劉邦引兵西進,在昌邑(今山東巨野東南)遇到彭越的部隊,遂與其合力進攻昌邑,沒能攻下,隻得返回栗縣(今河南夏邑)。
在栗縣時,劉邦遇到剛武侯,吞並他的部隊,劉邦軍隊增加了四千多人。接著與魏將皇欣、魏申徒武蒲軍合攻昌邑,又沒攻下。劉邦決定舍棄昌邑不打,率軍西行。
劉邦行軍至碭郡的高陽,並訪求賢士。正好他軍中有一名騎士家在高陽,於是回家探親。這時高陽人酈食其為其同鄉,於是就請他代為向劉邦引薦自己。他對騎士說:“我聽說武安侯傲慢而看不起人,但他有許多遠大的謀略,這才是我真正想要追隨的人,隻是苦於沒人替我介紹。
你見到武安侯,可以這樣對他說,‘我的家鄉有位酈先生,年紀已有六十多歲,身高八尺,人們都稱他是狂生,但是他自己說並非狂生。”騎士說:“武安侯並不喜歡儒生,許多人頭戴儒生的帽子來見他,他就立刻把他們的帽子摘下來,在裡邊撒尿。在和人談話的時候,動不動就破口大罵。所以您最好不要以儒生的身份去向他遊說。”酈食其對他說:“你隻管像我教你的這樣說。”騎士回去之後,就按酈生囑咐的話從容地告訴了劉邦。
於是通過騎士引薦,酈食其見到了劉邦。但劉邦在召見他時,正踞坐在床,令兩女子給其洗腳。
酈食其大為不滿,長揖不拜,直接斥責道:“您是想幫助秦國攻打諸侯呢,還是想率領諸侯滅掉秦國?”劉邦罵道:“你個混賬儒生!天下的人同受秦朝的苦已經很久了,所以諸侯們才陸續起兵反抗暴秦,你怎麼說幫助秦國攻打諸侯呢?”酈生道:“如果您下決心聚合民眾,召集義兵來推翻暴虐無道的秦王朝,那就不應該用這種倨慢不禮的態度來接見長者。”
於是劉邦起身道歉,整理好後以禮接待了酈食其。酈食其的弟弟酈商也率部下約四千多人加入劉邦的隊伍。
酈食其勸劉邦進攻陳留縣,劉邦從其計,奪下陳留,得到大量補給。
接著令酈商為將,進攻開封,但未能攻克。劉邦繞過大梁西進,與秦將楊熊所率秦軍大戰於白馬、曲遇,大敗秦軍。楊熊敗走。劉邦軍緊追其至白馬,再次大破秦軍,楊熊逃至滎陽,被秦二世派人殺死。
消滅楊熊所部秦軍後,劉邦率軍南下攻穎陽,屠之。而此時張良再次與劉邦相遇。
之前,張良勸項梁立韓成為韓王,並隨韓王成西至韓地略地。但是一年多來,所略之地每占輒失,始終沒打開局麵,因此遊兵於穎川一帶。
劉邦率軍進至此,與張良的韓軍合兵,攻軒轅(今河南登封西北)略定韓地。趙彆將司馬卬想要渡過黃河進入關中,劉邦率軍北上,攻打平陰縣,破壞掉黃河渡口。南下與秦軍再戰雒陽東,不利,南下陽城,收取城中軍馬。與南陽郡的郡守呂齮戰於犨縣(今河南平頂山西南)東麵,大破南陽秦軍。劉邦占領了南陽郡,呂齮退守宛城。
楚軍想繞過宛城直接西進。張良勸道:“您雖欲急入關,秦兵尚眾,距險。今不下宛,宛從後擊,強秦在前,此危道也。”
於是劉邦在夜晚引兵還攻宛城,偃旗息鼓,天未明,就將宛城團團圍住。呂齮想要自殺,他的門客陳恢加以勸阻,並出使楚營,與劉邦約定舉城歸降。劉邦封呂齮為殷侯,封陳恢食邑千戶。
劉邦率軍繼續西行,奪取了丹水(今河南淅川)。而高武侯鰓、襄侯王陵這時也加入劉邦所率領的楚軍,攻下西陵、胡陽。並且番君吳芮的部將梅鋗也至此,與劉邦軍聯合,攻下析(今西峽縣)、酈等地。
劉邦所部楚軍進兵至武關東麵,於是派魏人寧昌出使秦廷,而這時章邯也投降了項羽。秦丞相趙高弑殺秦二世,令使者回報劉邦,想要和劉邦約定平分關中。
劉邦認為趙高在使詐,於是聽從張良之計,讓酈食其、陸賈勸降武關(今陝西丹鳳縣武關鎮)秦將,趁此機會襲取武關。之後,劉邦一麵率軍西進,一麵令酈商彆將攻取秦的漢中、巴、蜀等地。[接著劉邦軍再在嶢下擊敗秦軍,進至秦都鹹陽附近的藍田。秦廷在組織了最後的力量,與劉邦軍大戰於藍田,遭遇大敗。此後,秦朝失去了所有的抵抗力量。
秦二世三年(前207年)十月,劉邦的軍隊先於各路諸侯到達灞上。秦王子嬰乘素車、駕白馬,用絲帶係頸,手捧著皇帝的玉璽符節,在軹道旁投降。秦朝至此滅亡
劉邦進入了鹹陽後,以“關中王”自居。看著富麗堂皇的宮殿,劉邦有些留戀,準備就此住下。
樊噲勸他注意天下還沒有平定,彆忘了秦的前車之鑒。劉邦根本聽不進去,直到張良親自來勸,他這才認識到了問題的嚴重性。於是,劉邦率軍退到了灞上。
劉邦到達灞上之後,便召集當地的名士,和他們約法三章:殺人者死,傷人及盜抵罪。其他秦朝的苛刻法製一律廢除,這使他得到了民心支持。
這時,項羽在擊敗章邯後,也領兵直奔關中而來。範增勸他趁機除掉劉邦,項羽就下令準備,要在第二天進攻。這時的劉邦在兵力上無法和強大的項羽相抗衡,他隻有十萬軍隊,不可能戰勝項羽的四十萬精兵。
最後是項羽的叔叔項伯“救”了劉邦:項伯和張良很要好,見項羽要進攻了,便連夜潛入營中找到張良,讓他趕緊走,以免被殺。
張良卻說不能丟下劉邦,就將消息透露給了劉邦。驚慌之下,劉邦趕忙向張良要計策,張良讓劉邦趕緊去見項伯,說明自己沒有野心和項羽爭奪王位。
劉邦依計約到項伯,說明自己並無稱王野心,並於項伯約成兒女親家。