隋大业十三年、义宁元年(617 年)二月,李密、翟让的瓦岗军袭破隋之洛口仓(今河南巩义东),开仓放粮,赈济饥民,远近灾民纷纷投靠之,瓦岗军声势浩大(参见本书《李密夜袭洛口仓之战》)。
留守东都洛阳的隋朝越王杨侗派虎贲郎将刘长恭和光禄少卿房崱(zè),率步、骑二万五千前往洛口仓讨伐李密、翟让。杨侗又派河南捕讨大使裴仁基率所部兵马从汜水(今河南汜水,在洛口仓之东)进攻洛口仓,与刘长恭部东西夹击李密,约定于二月十一日会师于洛口仓之南。
李密探得消息,决定先行击败刘长恭部。盖因刘长恭部都是刚从洛阳招募的乌合之众,战斗力不强。据史载,杨侗等人视李密、翟让为“盗”,在洛阳以剿灭“盗米贼”为名招募士卒,东都人都以为李密虽然势大,不过是些掠抢洛口仓粮食的盗贼罢了,很容易便可讨平之,因此争相应募,以为这是升官发财的机会。甚至国子太学的书生、四门三馆的学士、豪门贵族的纨绔子弟也来从军,装备精良,衣服华美,旌旗钲鼓甚盛。可惜这支临时招募的队伍未经战阵,是不折不扣的乌合之众。
而镇守虎牢关(在今河南汜水,北临黄河,为戍守重地)的河南捕讨大使裴仁基却善于用兵,深得将士之心。李密若先与裴仁基作战,势必大费力气。刘长恭再率兵来袭,李密腹背受敌,胜负实难预料。
因此,李密决定先全力击破刘长恭,再率兵对付裴仁基。刘长恭部兵骄将傲,可以设计迅速歼灭之。
裴仁基部尚未抵达洛口仓之东,刘长恭已率军渡过洛水,列阵于石子河(今河南巩义附近)之西,南北十余里,准备大举向洛口仓发动攻击。
李密乃分士卒为十队,翟让率六队列阵于石子河之东,李密率四队埋伏于横岭(嵩山北麓,在今河南巩义东),准备在翟让败退、刘长恭部追击至此时伏击隋军。
隋军尚未吃早饭,裴仁基部也未到达,刘长恭便驱士卒渡洛河列阵,大有“灭此朝食”的骄横之态。
战斗开始后,翟让部众不敌,遂向横岭方向退却。
刘长恭不知李密有诈,以为瓦岗军不是自己的对手,一战即溃,乃下令追击。至横岭时,“密帅麾下横冲之,隋兵饥疲,遂大败”(《资治通鉴·隋纪七》)。单雄信、徐世勣、王伯当等瓦岗军将领率部杀入刘长恭军中,纵横驰骋,隋军被斩杀者十之五六。刘长恭脱却战袍,潜行而逃,仅以身免。
石子河之战,是李密击破隋军的又一大捷。观其战术,仍是采用击破张须陁之故技:诱敌进入伏击圈,然后予敌以突然袭击。略有不同的是,李密击破张须陁一役,采用的是包围伏击之术,而破刘长恭一役,则采用侧翼埋伏之阵型,拦腰截击敌人,从而“使敌人前后不相及”(《孙子·九地篇》)。
裴仁基部开至百花谷(今河南汜水西),便得到了刘长恭部被歼灭的消息,大惧,乃在此固垒自守,又因进军误期,没与刘长恭配合作战,担心获罪于朝,故进退无据,惶惶不安。李密得知裴仁基之狼狈处境,乃派人劝降。裴仁基权衡利弊,遂杀掉监军萧怀静,率儿子裴行严和部将秦琼、罗士信等献虎牢关投降,李密封裴仁基为上柱国、河东公。
李密一战击灭张须陁,再战袭取洛口仓,三战聚歼刘长恭,威望骤增,声势大振,翟让、徐世勣、单雄信、王伯当等众将遂推李密为王,号“魏公”。二月十九日,李密即位改元,拜翟让为上柱国、司徒、东郡公,单雄信为左武侯大将军,徐世勣为右武侯大将军。“于是赵、魏以南,江、淮以北,群盗莫不响应……道路降者不绝如流,众至数十万。乃命其护军田茂广筑洛口城,方四十里而居之,密遣房彦藻将兵东略地,取安陆、汝南、淮安、济阳,河南郡县多陷于密。”(《资治通鉴·隋纪七》)瓦岗军遂达到鼎盛阶段。