真興王準備了三個多月,正式北伐。554年9月,新羅出動全部戰兵8萬,加4萬輔兵,1萬水師,合13萬人,水陸並進,大舉北伐。高句麗南面的防守有8萬人,不過分布在海州、開城、長豐三地。真興王選擇集中優勢兵力,各個擊破,首先發動陸軍,全部進攻開城東邊的長豐。
面對高句麗這麽強大的敵人,新羅沒法像打百濟那樣悠哉了。打泗都時可以圍城打援,是因為百濟主力已被全殲,可高句麗後方廣闊的很。圍城打援搞不好就被內外夾攻,於是真興王隻得速戰速決,下令全軍舍命攻城。長豐是座小城,只是開城的前哨站,面對8萬大軍的圍攻,連消息都傳不出去,隻得等後方的探子發現敵情了。
不過開城方面準備妥當,馬上主動支援長豐,長豐守軍發現開城部隊從西向來救,馬上開西城門突圍。面對開城軍隊,真興王怕被內外夾攻,隻得敞開西線的包圍,卻沒想到是城內軍隊出去,而不是城外軍隊進去,真興王靈機一動,馬上令圍城部隊集中攻打東門,由於高句麗主力出逃,新羅馬上就佔領了長豐。
原來長豐的軍隊不知情,已經被新羅強烈的攻勢給嚇怕了,看到援軍來了,第一想到的就算求救逃命,而不是堅定信心繼續堅守。好在全身而退,沒有損失太大兵力,高成為了以儆效尤,還是給主將給斬首示眾了,並下令開城將士無論如何都要死守開城。
很快,新羅大軍就來到了開城,開城可不是長豐,是高句麗的南大門,長期以來都是朝鮮半島的中心位置,正史上還長期是半島上其他政權的國都。開城可不好打,城牆高大堅固,城內有6萬守軍,且北面有山西面有河,都不適合包圍,只能從東、南面進攻。真興王派輔兵在開城北面山上築了很多小碉堡,用來監視北面高句麗援軍的動向,一旦有援軍來了好提早做準備。
面對開城高聳堅固的城牆,真興王被難住了,而且他還發現,圍城不僅風險高,而且你想圍也圍不住,因為西面是河,高句麗救援開城的糧食就是從上遊新溪一帶運過來的。那如果我佔領河道呢?也非常困難,開城以下的河道早就被高句麗做了手腳,水面寬而河底淺,現在又是枯水期,河道中布滿礁石,新羅的大船根本上不去。
真興王正面強攻了一次開城,損失慘重,開城防禦十分凌厲,真興王便想靠挖地洞挖到裡面。這是個大工程,為配合主力,他同時又發動一萬戰兵配合水師打登陸戰,攻下了開城以西的延安郡。延安距離海州也只有10公裡,可海州高句麗也駐有2萬軍隊,新羅已無法擠出優勢兵力去攻打了。
這段時間,新羅辛辛苦苦挖的地道終於要通到開城城內了,可開城裡也有反偵察,他們夜靜時也探到了地下的挖洞聲,早已有了準備。在新羅軍快挖到地面的時候,高句麗主動挖了個大坑往裡面灌水,新羅被淹死的不計其數,真興王的挖洞計劃泡湯了。
面對紋絲不動的開城,真興王一籌莫展,他把鍋甩給了葛文,自己則借口國內有事回去了,那葛文又該如何進攻開城呢?