426年九月,北魏太武帝分派諸將,分兩路進攻大夏。一路由司空奚斤率義兵將軍封禮等四萬五千人襲擊蒲坂(今山西永濟西),宋兵將軍周幾率萬人襲擊陜城(今河南三門峽),一路由太武帝親率輕騎二萬于十一月在君子津(今內(nèi)蒙古清水縣)渡河,直趨夏國國都統(tǒng)萬城。太武帝軍至君子津時,赫連昌正在宴請群臣,魏師突然而至,上下驚俱。魏軍進兵至黑水(今內(nèi)蒙古伊盟烏審旗西南),距統(tǒng)萬城三十里。赫連昌倉促出戰(zhàn)而敗,退走入城。魏軍當夜宿于城北,分兵四出虜掠居民,殺獲數(shù)萬,得牛馬十余萬。而太武帝也擔心出征西秦的數(shù)萬大軍回救,決定放棄對統(tǒng)萬城的攻打,對諸將說“統(tǒng)萬未可得也,他年當與卿等取之”,遂遷徙夏民萬余家而還。
南線方面,夏弘農(nóng)太守(今河南靈寶西南)曹達聞魏宋兵將軍周幾將至,不戰(zhàn)而走。魏軍乘勝長驅(qū),進入三輔地區(qū)。夏蒲坂守將東平公乙斗聞奚斤將至,遣使去統(tǒng)萬城告急。使者至統(tǒng)萬之時,正值魏軍圍城,使者于是返回乙斗,告知“統(tǒng)萬己敗”。乙斗棄蒲坂西奔至長安,魏軍攻克蒲坂,“收其資器,百姓安業(yè)”。駐守長安的赫連助興與逃亡至此的乙斗共奔安定。十二月,奚斤攻入長安,秦、雍一帶的氐羌皆降于魏。河西王蒙遜及氐王楊玄聞之,也遣使附魏,北魏進攻夏國的南北兩路皆取得一定的勝利。
夏承光三年(427)正月,攻打統(tǒng)萬城的魏太武帝回到平城,但是其所徙夏民在路途中大多死去,能到達平城的只是十之六七。率大軍返回平城的魏太武帝,不久又東巡幽州,赫連昌乘此機會遣其弟平原公赫連定率眾二萬南下,欲與北魏留下來鎮(zhèn)守的奚斤爭奪長安。太武帝聽到這一消息后,立即派人在陰山伐木,大造攻具,準備再次攻打夏國。
夏承光三年二月,太武帝以高涼王拓跋禮鎮(zhèn)守長安,加強了長安的防守力量,并遣桓貸造橋于君子津,為再次進攻統(tǒng)萬城做準備。為了免去后顧之憂,太武帝在做這些準備工作的同時,又遣員外散騎常侍步堆、渴者仆射胡覷等出使劉宋,同時太武帝又命龍驤將軍陸俟督諸軍鎮(zhèn)守陰山北沙漠,以防備柔然。
在這一系列部署全部妥當之后,魏太武帝遂正式出兵西討赫連昌,命司徒長孫翰、廷尉長孫道生、宗正娥清等率精騎三萬為前驅(qū);常山王拓跋素、太仆丘堆、將軍元太毗等將步兵三萬為后繼;南陽王拓跋伏真、執(zhí)金吾桓貸、將軍姚黃眉等將步兵三萬運送攻城器械,將軍賀多羅將精騎三千為前候。北魏軍隊從君子津渡河后,夏國境內(nèi)的一些部落首領相繼率眾降附,如三城胡酋鵲子等。魏軍行至拔鄰山(在黑水東北)時,太武帝命諸軍舍去輜重,以輕騎三萬先行。但其群臣都反對以輕軍深入,認為“統(tǒng)萬城堅,非十日可拔。今輕軍討之,進不可克,退無所資。不若步軍攻具,一時俱往”。太武帝對此則有與眾不同的獨到見解,他認為“用兵之術,攻城最下;必不得己,然后用之。今以步兵、攻具皆進,彼必懼而堅守,若攻不時拔,則食盡兵疲,外無所掠,時退無地。不如以輕騎直抵其城,彼步兵未至,意必寬馳;若贏形以誘之,彼或出戰(zhàn),則成擒矣。所以然者,吾之軍士去家二千里,又隔大河,所謂置之死地而后生才也。故以之攻城則不至足,決戰(zhàn)則有余矣”。六月,太武帝率軍至統(tǒng)萬,分軍伏于深谷,只派一小部分軍隊直至統(tǒng)萬城下。
這時,夏國將領狄子玉降魏,將夏國的軍事策略告知太武帝;赫連昌曾遣使召南下攻長安的赫連定,但赫連定拒絕返回,他認為“城既堅峻,未可攻拔,待擒奚斤等,然后徐往,內(nèi)外擊之,何有不濟”。赫連昌認為赫連定的主意很好,決定固守不出。太武帝聞聽這一情況,頗為憂慮,于是決定全軍退至城北,偽示虛弱,同時派永昌王拓跋健及娥清等率騎五千,西進抄掠大夏居民。當時北魏軍士中有一人因有罪而逃奔于夏,說“魏軍糧盡,士卒食菜,軸重在后,步兵未至,宜急擊之”。赫連昌先見魏軍北退,又聽說魏軍糧盡,以為魏軍膽怯,遂率領步騎數(shù)萬出城攻擊魏軍。魏司徒長孫翰等人見夏軍步騎出城,建議說“昌步陣難陷,宜避其鋒,且縱步兵,一時奮擊”。太武帝認為“遠來求賊,恐其不出,今避而不擊,彼奮我弱,非計也。”魏軍遂假裝不敵逃跑,夏兵分兩翼猛追,太武帝退軍五六里,忽有風雨從東南方向魏軍迎面刮來,揚沙晦冥。這種情況對魏軍特別不利,于是又有人主張暫時收兵躲避,言于拓跋燾曰“今風雨從賊上來,我向之,彼背之,天不助人且將士饑渴,愿陛下攝騎避之,更待后日。”但此建議遭到崔浩的反對,崔浩認為“千里制勝,一日之中,豈得變易賊貪進不止, 后軍己絕,宜隱軍分出,掩擊其不意。風道在人,豈有常也。”
太武帝認同了崔浩的意見,于是分騎兵為左右兩隊進行包抄,并親臨戰(zhàn)陣指揮作戰(zhàn),雙方在統(tǒng)萬城外展開激戰(zhàn)。在戰(zhàn)斗進行的過程中,太武帝所乘坐的馬突然失足墜地,太武帝差一點為夏兵所擒,拓跋齊以身捍蔽,決死力戰(zhàn),夏兵乃退。帝騰自身上馬之后,刺殺夏國尚書斛黎文,。又殺騎兵十余人,身中流矢,仍奮擊不輟,于是夏兵大潰。魏軍乘勝追逐赫連昌至城北,殺其弟河南公滿及兄子蒙遜,夏兵死者萬余人。赫連昌來不及入城,遂向上邽(今甘肅天水市西南)逃去,“斤追之,至雍,不及而還。”魏太武帝微服追逐向統(tǒng)萬城逃奔的人,乘機進入統(tǒng)萬城。對于拓跋燾的這一行為,拓跋齊多次勸諫,但未果。統(tǒng)萬城內(nèi)的夏人覺察到拓跋燾進入統(tǒng)萬城這一情況,于是緊閉各個城門,魏主拓跋燾與拓跋齊等人進入其宮中,得婦人裙,魏主乘之而上,僅以得免。當時天己黑,夏尚書仆射問至乘機奉夏主之母出走,魏司徒長孫翰率八千騎追之至高平,不及而還。太武帝攻入統(tǒng)萬之后,俘獲夏國之王、公、卿、將、校及赫連昌諸母、后妃、姊妹、宮人以萬數(shù),擒夏尚書王買、薛超等及此前夏俘獲的東晉司馬德宗之將領毛修之、秦雍人士數(shù)千人,獲馬三十余萬匹,牛羊數(shù)千萬頭,府庫珍寶、車旗、器物不可勝數(shù),遂以夏國宮人及生口、金銀、珍玩布帛班賞于將士。
拓跋燾攻打統(tǒng)萬之時,赫連定與魏奚斤仍然相拒于長安,統(tǒng)萬城被攻破之后,拓跋燾遣其宗正娥清、太仆丘堆率騎兵五千略地關右,以增援長安。圍攻長安魏軍的赫連定聞知統(tǒng)萬城己被攻破,于是逃奔上邽,奚斤追至雍,不及而還。娥清與丘堆乘機攻下夏國所屬之貳城。太武帝以常山王拓跋素為征南大將軍、假節(jié),與執(zhí)金吾桓貸、莫云鎮(zhèn)守統(tǒng)萬,自己率一部分軍隊則班師返回平城,以其所獲“頒賜將士有差”。九月,夏國安定民舉城降魏。
統(tǒng)萬城被北魏攻破后,赫連昌及赫連定在上邽、平?jīng)龅貐^(qū)繼續(xù)茍延殘喘,但其己經(jīng)失去了政治中心,沒有了“蟠據(jù)之資”,成為一個流亡政權(quán),夏國最后的覆亡只是遲早的事。