曹操派遣曹仁等前往拒守,因为忌惮精悍的关西兵,曹操下令让诸将坚壁固守,不要正面进攻,等待曹操大军的支援。
七月,曹操率领中原大军亲自西征,与马超联军在潼关夹关对峙。曹操军驻扎在蒲阪,想要西行渡河,马超听说后对韩遂说:“可以在渭河北岸据守,不到二十天,河东粮食用尽,敌军便自行撤军了。”
但是被韩遂的“半渡击之”的计谋代替。曹操后来听闻了马超的计策后,感叹:“马超小儿不死的话,我恐怕连葬身的地方都没有了”。
八月,曹操从潼关北渡黄河,派徐晃、朱灵等率领四千人夜渡蒲阪津,马超知道后,派遣梁兴率领五千兵进攻徐晃,但被徐晃击退,徐晃占据河西设立营寨。
曹操亲自率军从潼关北渡,前队刚过,曹操和许褚以及虎士一百余人断后,马超突然率领步骑一万馀杀到,曹操身边的一百余人在马超军的箭矢覆盖下不知所为。
但曹操仍然坐在胡床上不起身。许褚、张郃等将领,见事情紧急,将曹操架起带出船中,急忙渡河,马超率领骑兵在后边追边射,箭如雨下,曹操几乎丧命。
曹操部下虎痴许褚一手用马鞍挡箭,一手撑杆,拼死救出曹操。
曹操帐下校尉丁斐在河岸放出大量牛马,马超的士兵顾不得乘胜追击,跑去抓奔跑牛马,马超控制不住,曹操因此才得以成功渡河。曹操手下将领见到南岸处的兵败,又不知道曹操在哪,都非常的惶恐害怕,到后来见到曹操,心情有的悲伤有的惊喜,还有的都吓哭了。曹操却大笑说:"今天差点被小贼的困住了!"
九月,曹操遁过渭河作甬道到渭南。马韩联军失去战略要地,只能退守,拒兵屯在渭口,曹操却多次设疑兵,用船载兵偷偷潜入渭河,做成为浮桥,到一天夜里,曹操分兵在渭南结营。联军趁夜攻击兵营,曹操设置伏兵击破马韩联军偷袭。于是马超等人屯兵在渭南,遣送信件,请求割河西一带和谈,但曹操不答应。
在娄圭泼水筑冰城的计策下,曹操大军得以分批渡过渭水,马韩联军数次挑战,曹操只是不应战,联军只能请求割地,送人质请和。曹操采取贾诩的计策,假装答应,然后在阵前和韩遂谈言欢笑.
期间马超韩遂在与曹操当面谈判时,马超自负其勇力绝人,在马前放置六斛米囊,骑马来回奔走,用斛米测量曹操的体重,想要暗中偷袭擒捉曹操,但听说曹操的护卫许褚,勇猛过人,所以放弃了这个想法。
曹操不久后知道,心有余悸,说:“差点被狡猾的贼人所欺凌。”让联军猜疑韩遂,曹操又写了一封涂改伪招安信给韩遂,离间关中联军,导致了关中联军的军阀们相互猜疑。曹操趁此机会发动攻击,在渭南一带发动大决战,联军大败,成宜、李堪等战死。
潼关之战,总计军民死伤数以万计,窦武之孙窦辅也中箭身死,曹操后悔没有听卫觊的话,逼反关中诸将。
马超、韩遂战败后,马超退往安定,又走奔上邽,郡人任养率自己的部众迎接马超。
曹操追兵到安定后,因为河间有人反叛,于是撤军回东边,当时作为使节的杨阜劝说曹操:“马超有韩信、英布那样的勇略,又深得羌人、氐人的拥戴,整个西州都非常敬畏他,如果大军归还,不做周密的准备,恐怕陇上诸郡县,就不再属于国家的了。”曹操虽然明白马超的厉害,但河间战事迫在眉睫,就先撤兵回邺城,留下夏侯渊等名将屯驻长安,而陇上诸郡为备不周。
建安十七年,正月,马超潼关之战失败不久,就再次率领诸戎渠帅起兵凉州,陇上诸郡县(陇西、南安、汉阳、永阳等)尽皆响应,张鲁也遣大将杨昂相助马超,共集结万余人,围攻凉州刺史韦康于凉州治所冀城。
五月,曹操抓捕在邺城的马超族人包括父亲马腾和两个弟弟马休、马铁等,计三族人,全部斩杀。
冀城自正月坚守至八月,救兵不至。凉州刺史韦康派阎温秘密出城,向夏侯渊求救。阎温乘夜潜水出城。第二天,马超军发现阎温的踪迹,派人追踪拦截他,马超军在显亲界内追上阎温,将他捉住去见马超。