并非如李渊所想进行：李渊步兵和隋军初交锋时，隋军占上风击退李渊，可能是因为李渊未能将全部军队投入战场，且李建成在战斗中坠马为敌所乘。李渊趁机伪退。宋老生以为李渊害怕自己，继续进兵，离霍邑数里列营。李渊在交战前先派李建成、李世民杀向霍邑城门。李世民率军头段志玄等二骑从南原陡坡上奔下，冲断隋军，引兵奋击，杀出隋军之后，李世民手杀数十人，两把刀都砍缺了，满衣袖都是血，洒血再战。隋军大败，丢下兵器而走。李渊士气复振，散布宋老生被擒斩的谣言，隋军士气彻底崩溃，抵抗瓦解。隋军退向霍邑城门，来路已被李建成、李世民阻断，守