劉邦等人認真分析形勢,認為現在剛剛起義,實力還跟弱小,當務之急是迅速打開局面,站穩腳跟。義軍在豐邑設立指揮部,攻下胡陵、方與(沛縣西北)。秦朝泗川監(官名)率軍攻打豐邑,被義軍打退。劉邦命令部將雍齒鎮守豐邑,自己帶著余部到薛縣(山東滕州),尋找秦朝泗州郡守(官名)決戰,義軍打了個大勝仗,斬殺泗州郡守。
起義以來劉邦取得一連串勝利,前景似乎一片大好,就在這時,嚴峻的考驗降臨了!陳王(陳勝,此時已稱王)命令部下、原魏國人周市經略魏地。周市立魏咎為魏王,自任魏相。趁劉邦不在,周市派人招降留守豐邑的雍齒。雍齒是劉邦的同鄉,出身沛縣豪強,心裡一直瞧不起小混混出身的劉邦。現在機會來了,雍齒毫不猶豫地投靠周市脫離劉邦陣營。後院起火,劉邦得到消息氣的當即領兵回頭攻打豐邑,沒有攻下。劉邦病了,估計多半是被氣的。這時,劉邦善於審時度勢的特點又體現了出來。劉邦借口生病,領兵回到沛縣。
豐邑終究是要解決的。雍齒成為劉邦最憎惡的人。自身權威不夠,得借用一面更大的旗,劉邦如是想。原楚國貴族景駒被另一路義軍擁立為楚假王(代理楚王)。劉邦前往投奔,打算借兵攻打豐邑。半路上,劉邦遇到了也來投奔景駒的張良。張良是韓國貴族後代,外號“智囊”。兩人見面交談,非常投緣。張良放棄投奔景駒的想法,轉投劉邦。張良後來成為劉邦最重要的謀士。
秦將司馬夷逼近楚地,屠殺百姓。劉邦暫時擱置內部矛盾,率軍向西,迎擊司馬夷,初戰不利,在補充兵員和糧草後,再次進攻秦軍,打退司馬夷。接著乘勝攻取下邑(安徽碭山縣)。劉邦軍隊已有近萬人。劉邦認為時機和實力都成熟了,再次攻打豐邑,仍然失敗。
劉邦聽說項梁駐扎在薛縣。項氏義軍在楚地實力最強。劉邦留下軍隊包圍豐邑,自己隻帶一百余騎趕到薛縣向項梁求援。劉邦此時在楚地已經擁有一定影響力,項梁想把這支義軍收入麾下,劉邦表現出來的坦誠也讓項梁有好感。於是項梁撥給劉邦十名將領和五千士兵。沛公劉邦成為項梁部下一員大將。劉邦第三次攻打豐邑。雍齒敵不過,逃奔魏國,後來又投靠趙國,最終投降了劉邦。雍齒不但沒被殺,在漢朝還封了侯,後面還會提到他。
雍齒的背叛說明劉邦對麾下這支義軍還沒有取得完全的控制,義軍領導層還存在質疑他領導權的聲音。前兩次攻打豐邑失敗可以佐證這個推斷。老鄉見老鄉,兩眼淚汪汪,反正是領導層內部之爭,小兵們戰場上就做做樣子。逼得劉邦不得不借助外部力量消彌叛亂。