中守军就声称请求投降;将领们奉炀帝之命,不敢抓住战机,先派人疾驰上奏,等到批复到达时,城中的防御已经准备就绪,随即出兵迎战。这样的情况反复多次,炀帝始终没有醒悟。辽东城久攻不下,六月己未日,炀帝前往辽东城南,观察城池形势,随后召见各位将领,斥责他们说:“你们自以为官高爵显,又依仗家世背景,想要用怯懦的态度对待我吗!在京城的时候,你们都不愿意我亲征,恐怕看到你们战败的样子。我今天来到这里,就是要亲眼看看你们的所作所为,斩杀你们这些人!你们现在畏惧死亡,不肯尽力作战,难道以为我不能杀你们吗!”各位将领都吓得脸色大变。炀帝于是留在辽东城西数里处,住在六合城中。高丽的各个城池都坚守不下。右翊卫大将军来护儿率领江淮水军,船只首尾相连长达数百里,从海路率先进发,从浿水驶入,在距离平壤六十里的地方与高丽军队相遇,发起攻击,大败高丽军队。来护儿想要乘胜直逼平壤城,副总管周法尚劝阻他,请求等待各路军队会师后再一同进军。来护儿不听,挑选四万精锐士兵,直接抵达平壤城下。高丽军队在城外的空寺中设下埋伏,出兵与来护儿交战,随后假装战败,来护儿率军追击入城,放纵士兵抢掠,军队完全失去了建制。这时埋伏的高丽军队发起突袭,来护儿大败,仅以身免,返回的士兵不过数千人。高丽军队追击到江边的战船处,周法尚整顿军阵严阵以待,高丽军队才撤退。来护儿率领军队退回海边驻扎,不敢再留下接应各路军队。
左翊卫大将军宇文述率军从扶馀道出发,右翊卫大将军于仲文从乐浪道出发,左骁卫大将军荆元恒从辽东道出发,右翊卫将军薛世雄从沃沮道出发,右屯卫将军辛世雄从玄菟道出发,右御卫将军张瑾从襄平道出发,右武将军赵孝才从碣石道出发,涿郡太守检校左武卫将军崔弘昇从遂城道出发,检校右御卫虎贲郎将卫文昇从增地道出发,各路军队都在鸭绿水西岸会师。宇文述等人的军队从泸河、怀远二镇出发时,每人都配备了一百天的粮食,还发放了排甲、枪槊、衣物、军用器具和帐篷,每人负重达三石以上,士兵们无法承受。炀帝下令军中:“遗弃米粟者斩首!”士兵们只好在帐篷下挖坑,将粮食埋起来,刚走到半路,粮食就已经快要耗尽了。
高丽派遣大臣乙支文德前往隋军大营诈降,实际上是为了侦察隋军的虚实。于仲文事先接到炀帝的密旨:“如果遇到高元或乙支文德前来,务必将他们擒获。”于仲文准备捉拿乙支文德,尚书右丞刘士龙作为慰抚使,坚决阻止了他。于仲文只好让乙支文德返回,不久后又后悔了,派人欺骗乙支文德说:“还有事情要跟你说,请你再回来一趟。”乙支文德不予理会,渡过鸭绿水离去。于仲文和宇文述等人因为放走了乙支文德,内心不安,宇文述因为粮食耗尽,想要撤军。于仲文建议率领精锐部队追击乙支文德,或许能立下功劳。宇文述坚决反对,于仲文大怒说:“将军率领十万大军,却不能打败小贼,还有什么脸面去见陛下!况且我这次出征,本来就知道不会有功,为什么呢?古代贤能的将领之所以能够成功,是因为军中事务由一人决断。如今每个人都有自己的心思,怎么能打败敌人!”当时炀帝因为于仲文有谋略,命令各路军队都要向他咨询请示,听从他的调度,所以于仲文才敢说这样的话。宇文述等人不得已,只好听从于仲文的建议,与各位将领渡过鸭绿水追击乙支文德。乙支文德看到隋军士兵面带饥色,故意想要疲惫他们,每次交战都假装战败逃走。宇文述一天之内七战七捷,既依仗着突然而来的胜利,又迫于众人的议论,于是继续进军,向东渡过萨水,在距离平壤城三十里的地方,凭借山势扎营。乙支文德再次派遣使者诈降,向宇文述请求说:“如果你们撤军,我会护送高元前往陛下的行宫朝见。”宇文述看到士兵疲惫不堪,无法再作战,又考虑到平壤城地势险要坚固,难以迅速攻克,于是就借着乙支文德的诈降,下令撤军。宇文述等人率领军队摆成方阵后撤,高丽军队从四面八方发动袭击,宇文述等人边战边退。秋季,七月壬寅日,隋军退到萨水,军队刚渡过一半,高丽军队就从后方突袭隋军的后军,左屯卫将军辛世雄战死。于是各路军队全线溃败,无法控制。将士们争相奔逃,一天一夜就退到了鸭绿水,行程四百五十里。将军天水人王仁恭担任后卫,率军反击高丽军队,将其击退。来护儿得知宇文述等人战败,也率军撤回。只有卫文昇率领的一军得以保全。
起初,九路军队渡过辽水时,共有三十万五千人,等到撤回辽东城时,只剩下二千七百人,军用物资、器械数以万计,全部损失殆尽。炀帝大怒,将宇文述等人锁押起来。癸卯日,炀帝率领军队返回。
起初,百济王扶馀璋派遣使者请求跟随隋军讨伐高丽,炀帝让他侦察高丽的动静,不料扶馀璋暗中与高丽勾结。隋军即将出发时,扶馀璋派遣大臣国智牟前来询问出兵日期。炀帝非常高兴,给予他丰厚的赏赐,派遣尚书起部郎席律前往百济,告知出兵日期。等到隋军渡过辽水,百济也在边境上部署军队,声称要协助隋军,实际上持观望态度。
这次出征,隋军只在辽水西岸攻克了高丽的武历