北魏太平真君六年六年九月,不堪北魏统治的
盖吴于杏城(今陕西省
黄陵县侯庄乡故城村)聚众反魏,拥众10余万,遣使上表依附
南朝宋。十月,魏长安镇副将
拓跋纥领兵攻盖吴,拓跋纥败死。魏太武帝
拓跋焘又征发高平敕勒部的骑兵赴长安(今西安),命将军叔孙拔统领并(今太原)、秦(今甘肃天水)、雍(今陕西省凤翔县)三州兵马屯于渭水之北,共御盖吴军。
十一月,盖吴遣另一支部队的统帅
白广平进攻新平(今陕西彬县),安定(今甘肃泾川北)诸胡群起响应;盖吴又分兵攻临晋(今陕西大荔东南)以东,为魏将章直部击败,溺死于黄河者3万余人。盖吴又西向长安发展,在渭北被魏将叔孙拔部击败,死3万余人。时迁居于河东(今山西永济)蜀人
薛永宗聚众响应盖吴,袭击闻喜(今属山西),为当地地主武装所击退。
魏帝命薛拔纠合宗族百姓,列营于黄河沿岸,阻断盖吴和薛永宗两部义军往来之路;又使殿中尚书拓跋处直等率2万骑攻薛永宗,殿中尚书乙拔率3万骑攻盖吴,西平公寇提率万骑攻白广平。盖吴自称天台王,下设文武百官。
次年正月,魏帝领军至
东雍州(治今山西临汾)围薛永宗城堡,乘北风迅疾,大破薛永宗部,永宗与家人皆投汾水死。魏帝南至汾阴(今山西万荣西南),渡河,至洛水桥,闻盖吴在长安北,即沿
渭水南岸西进,抵达戏水(今陕西临潼东北)。盖吴得讯,散入北地山。
二月,魏帝至长安,经盩厔(今陕西周至东),历陈仓(今陕西宝鸡市东),还至
雍城(今陕西
凤翔东南),所过之处,尽杀与盖吴有通谋者。乙拔等诸军于杏城大破盖吴义军,盖吴遣使向宋求援。宋文帝
刘义隆以盖吴为都督关、陇诸军事、雍州刺史、北地公;并使雍、梁二州陈兵于边境,以为声援。
五月,盖吴收集所部兵马,聚于杏城,自号秦地王;声势复振。魏帝又遣永昌王
拓跋仁、高凉王
拓跋那督长安以北诸军进攻盖吴。六月,北魏发冀、相、定三州兵2万人,屯长安南山诸谷,以防盖吴逃逸;又发司、幽、定、冀四州兵10万修筑京畿外围要塞,广纵千里,以堵击盖吴。