陆军方面,隋炀帝的主力部队虽然在辽东城与高句丽相持不下,但炀帝并不是不会变通的人,他命令:
左翊卫大将军宇文述出扶余道,右翊卫大将军于仲文出乐浪道,左骁卫大将军荆元恒出辽东道,右翊卫将军薛世雄出沃沮道,左屯卫将军辛世雄出玄菟道,右御卫将军张瑾出襄平道,右武候将军赵孝才出碣石道,涿郡太守检校左武卫将军崔弘升出遂城道,检校右御卫虎贲郎将卫文升出增地道,皆会于鸭绿水西。
前文提到,隋炀帝发兵时,派出了左、右路各十二军。以宇文述为首的这九军正是从这二十四路军中挑选出来的,宇文述、于仲文、荆元恒、薛世雄、辛世雄五路军属于左路军集团,张瑾、赵孝才、崔弘升、卫文升四路军属于右路军集团。从战略部署来看,这九路军有直扑平壤的打算。我们前文也提到过,宇文述是隋朝名将,也是杨广夺宗的得力助手,以他为首的九路大军气势汹汹,兵临鸭绿江,自然引起高句丽上下一片恐慌。不过,他们很快把恐慌的情绪抛却脑后,开始冷静地思索计策。
这天,宇文述和于仲文刚刚升帐,忽然得报:“高句丽大臣乙支文德前来投诚!”两人耳语一番,请乙支文德进帐。宇文述、于仲文设宴招待。正宴饮间,宇文述悄悄命令士兵伏于暗处,只等信号。原来隋军出征前曾打听过高句丽的底细,知道乙支文德非常善于诈降,所以临行前隋炀帝特地嘱咐二人,如遇乙支文德,不论来由,即刻拿下。正在这时,尚书右丞刘士龙来劝于仲文:“高句丽派使前来请降,我们不应怠慢。两国交战,不斩来使,今日如杀此人,恐损我大隋威名。”于仲文一时听从了刘士龙的建议,不顾宇文述和隋炀帝的密令,下令放归乙支文德。乙支文德前脚刚走,于仲文立刻就后悔了,赶紧派人追上乙支文德,告诉他:“贵国请降,我们已知晓,只是我们将军还有事要跟先生讲,请先生即刻回去。”乙支文德毫不理会,径直走脱,跳上小船,渡到鸭绿江东岸去了。宇文述和于仲文两人追悔莫及,一者受了隋炀帝的密令,二者几万大军被一个人耍得团团转,颜面何存?想到这些,两人不得已率兵渡河,追击乙支文德。宇文述的九路大军在抵达鸭绿江前,士兵常常抱怨辎重过多,但是宇文述严令不可丢弃一米一粟,士兵们没有办法,只好掘坑把粮草埋在地下。现在宇文述突然下令急行军追击乙支文德,所以没过多久,隋军的供粮就出现问题了。乙支文德观察到了这一点,于是他率领一支部队与隋军接战,边打边撤,将隋军战线拉得越来越长。宇文述眼睁睁看着隋军粮草一天天减少,而乙支文德一天天来挑战,平壤城又近在咫尺,心急如焚,进退两难,无奈之下,下令撤军。隋军撤退途中,渡过萨水,正渡到一半,忽然后军大乱。兵法上讲:“兵半渡可击”,高句丽人不会不明白这个道理。他们趁隋军渡河渡到一半,突然发动袭击。隋军大乱,四散奔逃,宇文述拼命聚敛残兵,怎奈兵散如流星,根本聚不齐。隋军在缺粮的情况下拼命奔逃了一天一夜,行四百五十里,才跑到鸭绿江边,得到了其他隋军的接应。这一战隋军一败涂地,九路大军只有卫文升一路独全。当初这九路军共计三十万五千人渡过辽水,等到败退回辽东城时,只剩二千七百人,粮草马匹军械丢失无数。
隋炀帝怎么也没有想到,自己的百万雄师,竟被高句丽几十万军队打得一败涂地,最得力的战将宇文述、来护儿都没能取得哪怕一场大胜。回到东都后,宇文述旋即被免职。刘士龙被斩首,于仲文忧愤交加,病逝于家中。这也标志着隋炀帝一征高句丽的全面失败。
隋第一次征高句丽失败后,由于是役几乎发动了全国大部分劳力,所以导致大量田地荒芜、农业减产,加之天大旱以及疫病流行,隋朝人口大量锐减。然而就在这样的情况下,隋炀帝依然没有停止他对高句丽的军事行动。大业九年(公元613年)正月,隋炀帝对侍臣讲:“高丽小虏,侮慢上国;今拔海移山,犹望克果,况此虏乎!”遂再征天下兵,准备第二次征讨高句丽。我们知道自北周以来,府兵制就开始推行,隋朝也沿用了这一制度,首征高句丽的时候,所用的兵,大多都是府兵。这一次,隋炀帝吸取了上次的教训,开始招募真正有意愿去参加战争的民兵。这些兵用我们现在的话讲叫志愿军,而隋炀帝则将他们命名为“骁果”,大概是取“骁勇果敢”之意。我们需要注意,隋唐时期的兵制,从比较宏观的角度来看,经历了从府兵制到募兵制的变化。