隋炀帝死后,李渊称帝,建立唐朝。随即王世充有样学样,逼迫杨侗退位,自己称帝建立郑国。窦建德趁宇文化及被李密打败之机,攻打宇文化及并斩杀之,随后也称帝在河北建立夏国。李密失魏后,中原地区就剩下唐、郑、夏三支力量最强大了。
武德二年,徐茂公率领所部瓦岗军投唐,并受封改名为李世勣。同年,在黎阳受到窦建德攻击,其父李盖被俘而不得已降夏。后不久从窦建德处逃回唐朝。
武德三年(620年)七月,李渊下诏秦王李世民征讨王世充。李世勣、秦叔宝、程咬金一起随秦王出征。
王世充闻唐军来袭,命魏王王弘烈守襄阳(今湖北襄樊县)、荆王王行本守虎牢、宋王王泰镇守怀州(今河南沁阳)、齐王王世恽负责洛阳南城、楚王王世伟守洛阳宝城、太子王玄应守洛阳东城、汉王王玄恕守含嘉(洛阳城北)、鲁王王道徇守曜仪(洛阳宫城北),王世充亲自率军作战。
李世民率军打到慈涧(今河南新安县东三十里),王世充退守洛阳。李世勣知道洛阳城池坚固,不易攻克,就向李世民献策准备长期围困洛阳,李世民称善。于是,唐军就开始蚕食洛阳附近的城镇,切断郑军的粮线,驻军于洛阳北邙,进逼洛阳。
唐军势大,河南五十余州相继归降。王世充不得已遣人向夏王窦建德求救。
窦建德的中书侍郎刘彬劝他说:“天下大乱,唐得关西,郑得河南,夏得河北,形成三足鼎立之势。如今唐起兵攻郑,从秋到冬,唐军日见增多。郑国地域日益缩小,唐强郑弱,势必不能支撑。郑灭亡,夏也不能单独存立了。不如放弃仇怨,发兵救郑,夏从外袭击,郑自内反攻,一定能打败唐军。唐军退兵后,再慢慢观察形势变化,如果郑可取就取郑,合并两国的兵力,趁唐军疲劳,可以夺取天下!”
窦建德听从了此论,派人回复王世充,答应出师援救。
窦建德又派遣礼部侍郎李大师等人赴唐军处,请求唐停止进攻洛阳。李世勣授意李世民来个缓兵之计,留下了夏的使者,但不予答复。并加紧了对洛阳的封锁。
武德四年(公元621年),李世民挑选一千多精锐骑兵,全部着黑衣黑甲,分为左右队,分别由秦叔宝、程知节、尉迟敬德、翟长孙统领。
每次作战,李世民都亲自披上黑甲率领他们作为先锋,乘机进击,所向披靡,令敌人畏惧。
行台仆射屈突通、赞皇公窦轨带兵巡行营屯,突然与王世充遭遇,交战失利。秦王李世民带领黑甲队救援,王世充大败。唐军俘获王世充的骑将葛彦璋,俘虏歼灭了六千多敌人。王世充逃跑回城。
王世充的太子王玄应率领几千人,从虎牢运粮到洛阳,李世民派遣将军李君羡截击,大败王玄应的运粮军,王玄应只身逃脱。
李世民派宇文士及回朝上奏请求进军包围东都洛阳。李渊对宇文士及说:“回去跟你们秦王殿下说:这次攻打洛阳,不获全胜,决不收兵!攻陷东都之际,隋朝皇室的车驾仪仗、图书簿籍以及器械,除去各人所必须的,就都委托你收集起来,其他的男男女女玉器布帛,都用来分赐给将士们。”
辛丑(十三日),李世民将军营转移到青城宫,尚未修好壁垒,王世充就率二万兵马从方诸门而出,凭借旧马坊的墙垣沟堑,靠近水抵御唐军。对于突然出现的郑军,唐军诸将全都有些惊慌起来。
李世民让精骑在北邙山列阵,自己带着李世勣登上北魏宣武帝陵观察郑军。看了一会儿后,他对李世勣说道:“王世充贼子的处境已窘迫了!他倾巢而出,想像当年打李密那样侥幸打一胜仗。今日我们若打败他们,以后他就再也不敢出战了!”李世绩也深以为然地点头说是。
对于这位英武不凡、射术精湛而又勇猛果决的秦王,李世勣也很是欣赏,颇有惺惺相惜之情。
李世民命令屈突通率领五千步兵过谷水进击王世充,并告诫屈突通道:“军队一交锋立即放烟火。”
待到起烟,李世民带领骑兵向南冲击,身先士卒,与屈突通汇合兵力奋力战斗。李世民想了解王世充军阵兵力分布情况,率几十精锐骑兵冲入敌阵,一直冲到敌阵背后,不可阻挡,杀伤很多敌人。
不久因长堤所限,李世民和众骑兵走散唯有将军丘行恭跟随着李世民。几名王世充的骑兵追上来,李世民的坐骑中箭倒毙。丘行恭调转马头向回骑,射击追赶的郑兵,箭无虚发,追兵不敢向前。于是丘行恭下马将自己的坐骑让给李世民,自己在马前步行,手执长刀跳跃大喊斩杀几人,冲出王世充军阵,得以回归唐军大部队。
王世充也率领部下殊死战斗,军队几次三番打散后重又集合起来,从上午七八点钟直到中午,王世充的军队才退军。李世民挥军追击,直到城下,俘虏歼灭了七千人,于是包围了洛阳。
唐骠骑将军段志玄奋力与王世充的士卒交战,深入敌阵,坐骑倒下,段志玄被王世充的士兵俘获。两名骑兵夹着他并抓住他的发髻,准备过河,段志玄奋勇跳起,那两名骑兵都掉下马来。段志玄骑上马奔回唐军,后面有几百名骑兵追赶,但都不敢靠近。
李世民包围了洛阳宫城。城中王世充的防御还是十分严密。大炮可以射五十斤重的石头,投出二百步远,有八个弓的弩,箭杆像车辐,箭镞如同臣斧,可以射五百步远。
李世民四面攻城,昼夜不停,十几天未能攻克。城中先后有十三个人想献城倒戈策应归唐,均没有来得及发动就被王世充发现并处死了。
久攻不下,唐军将士都疲惫不堪想回关中。总管刘弘基等人请求班师回朝。李世民说道:“如今大举而来,应当一劳永逸。洛阳以东的各州已望风归服,唯有洛阳一座孤城,其势已不能持久,成功在即,怎么能放弃而回朝呢?”于是下令全军:“洛阳不破,决不回军,再有胆敢提起班师的一律斩首。”众人才不敢再提班师一事。
李世勣又向李世民提议围而不攻,困死王世充。李世民想想也是,就令大家驻扎下来修整,严防郑军偷袭与突围即是。
李渊听说久攻洛阳不下后,也下密敕让李世民还军。李世民上表说明洛阳必定可以攻克,又派参谋军事封德彝回朝面陈军前形势。
封德彝对李渊说:“王世充得到的地方虽然多,但都不过是略有联系的部属,实际号令所能管辖的只不过洛阳一城而已,他已经智尽力穷,克城之日就在近期之内。现在如果回师,他的势力就会重新振作起来,再加上各地互相联合,以后想要消灭他就难了!”于是李渊听从李世民的建议。
李世民写信给王世充,晓以祸福利害,准备劝降他。王世充没有回复,他当然是在等窦建德的援兵的到来。