綦良率軍進攻慈州刺史上官政,未能攻克,就率兵進攻兼任相州的行政長官薛胄,又未攻克,於是就從滏口進攻黎州,堵塞白馬津。餘公理從太行山到河內。煬帝任命右衛將軍史祥為行軍總管,在河陰駐軍。史祥對軍吏說:“餘公理輕率無計謀,依恃人多而驕橫,很容易打敗。”餘公理駐紮在河陽。史祥在河的南岸準備好船隻,餘公理集中兵力以抵擋史祥的進攻。史祥挑選精兵從河下游暗地渡河,餘公理聽到這個訊息就率兵抵抗,兩軍在須水交戰。餘公理的軍隊尚未佈置好陣容,史祥已率軍進攻,大敗餘公理。史祥率軍向東進逼黎陽,綦良的軍隊不戰而潰。史祥是史寧的兒子。
帝將發幽州兵,疑幽州總管竇抗有貳心,問可使取抗者於楊素,素薦前江州刺史勃海李子雄,授上大將軍,拜廣州刺史。又以左領軍將軍長孫晟為相州刺史,發山東兵,與李子雄共經略之。晟辭以男行布在諒所部,帝曰:“公體國之深,終不以兒害義,朕今相委,公其勿辭。”李子雄馳至幽州,止傳舍,召募得千餘人。抗來詣子雄,子雄伏甲擒之。抗,榮定之子也。
煬帝要徵發幽州的軍隊。他懷疑幽州總管竇抗有二心,就問楊素誰能把竇抗抓來。楊素推薦了前江州刺史勃海人李子雄。煬帝任命李子雄為上大將軍、廣州刺史;又任命左領軍將軍長孫晟為相州刺史,徵發崤山以東的軍隊,和李子雄一起籌劃處理此事。長孫晟因為他兒子長孫行布在楊諒的軍隊裡,就推辭任命。煬帝說:“您能夠體諒國家的困難,終歸不會因為兒子而損害國家大義,我委您以重任,您不要推辭。”李子雄馳馬到達幽州,就在驛站停住。他招募到一千人。竇抗來見李子雄,李子雄埋伏好甲士將竇抗逮捕。竇抗是竇榮定的兒子。
子雄遂發幽州兵步騎三萬,自井陘西擊諒。時劉建圍戍將京兆張祥於井陘,子雄破建於抱犢山下,建遁去。李景被圍月餘,詔朔州刺史代人楊義臣救之。義臣帥馬步二萬,夜出西陘,喬鍾葵悉眾拒之。義臣自以兵少,悉取軍中牛驢,得數千頭,復令兵數百人,人持一鼓潛驅之,匿於澗谷間。晡後,義臣復崐與鍾葵戰,兵初合,命驅牛驢者疾進,一時鳴鼓,塵埃漲天,鍾葵軍不知,以為伏兵發,因而奔潰;義臣縱擊,大破之。晉、絳、呂三州皆為諒城守,楊素各以二千人縻之而去。諒遣其將趙子開擁眾十餘萬,棚絕徑路,屯據高壁,布陳五十里。素令諸將以兵臨之,自引奇兵潛入霍山,緣崖谷而進。素營於谷口,自坐營外,使軍司入營簡留三百人守營,軍士憚北兵之強,不欲出戰,多願守營,因爾致遲。素責所由,軍司具對,素即召所留三百人出營,悉斬之;更令簡留,人皆無願留者。素乃引軍馳進,出北軍之北,直指其營,鳴鼓縱火;北軍不知所為,自相蹂踐,殺傷數萬。諒所署介州刺史梁羅屯介休,聞素至,棄城走。
李子雄徵發幽州的軍隊,步、騎兵共三萬人,從井陘向西進攻楊諒。當時劉建將守將京兆人張祥包圍在井陘,李子雄在抱犢山下擊敗劉建,劉建逃走。李景被楊諒的軍隊包圍了一個來月,煬帝下詔命令朔州刺史代人楊義臣救援李景。楊義臣率領騎、步兵共兩萬人,夜間出了西陘關。喬鍾葵集中全部兵力抵抗楊義臣。楊義臣知道自己兵少,就集中軍中所有的牛、驢,共有幾千頭,又命令幾百名士兵,每人持鼓一面,暗地驅趕牛驢隱蔽在山谷間。黃昏後,楊義臣又與喬鍾葵交戰。剛一交兵,楊義臣就命令驅趕牛、驢計程車兵迅速前進,一時間戰鼓敲響,塵埃滿天,喬鍾葵的軍隊不知怎麼回事,以為對方的伏兵出擊了,因而奔逃潰散。楊義臣縱兵進攻,大敗喬鍾葵。晉、絳、呂三州城池都是楊諒軍防守,楊素向每座城池各派兩千人去牽制,楊諒派遣將領趙子開率領十餘萬人,用柵欄堵塞山徑小路,在高壁嶺上屯兵據守,軍隊擺開的陣勢達五十里。楊素命令手下的將領們率兵對陣,自己率領奇兵潛入霍山,沿著懸崖山谷前進。楊素在山谷口紮營,自己坐在營帳外,派軍司進軍營挑選三百人守營,軍士們恐懼楊諒軍隊的強盛,不想出戰,多數人願意守營,因此行動遲緩。楊素責問遲緩的原因,軍司以實回答了,楊素馬上把留下守營的三百人召出軍營,全部斬首。他再次命令挑選留守人員,人們都不願意留下。於是楊素率軍馳馬行進,出現在楊諒軍隊的北面,直接對方的營地,嗚鼓縱火;楊諒的軍隊不知所措,自相踐踏,死傷了幾萬人。楊諒所任命的介州刺史梁羅屯兵在介休,聽到楊素將至就棄城逃跑。
諒聞趙子開敗,大懼,自將眾且十萬,拒素於蒿澤。會大雨,諒欲引軍還,王諫曰:“楊素懸軍深入,士馬疲弊,王以銳卒自將擊之,其勢必克。今