四个势力在荒凉的洛阳齐聚。公孙瓒和堂弟公孙越、公孙范、冀州刺史严纲、青州刺史田楷、兖州刺史单经、大将赵云起兵一万五千先到洛阳。文莱带郡丞董宁、都尉庞德、军司马华雄、军侯管亥、军侯史生、军侯周仓、县令夏侯惇、军师徐庶、县令甘宁起兵一万第二到洛阳。孙坚和长子孙策、武将程普、韩当、黄盖、朱治、谋士祖茂、侄子孙贲起兵一万五千第三到洛阳。曹操和曹洪、夏侯渊、曹仁、许褚、典韦、荀彧、郭嘉、曹休起兵一万最后到洛阳。四军大张声势到达晋阳郡,士兵在城外扎营,带兵将领共三十四员在城内驿馆居住。函谷关守军听说大军临关,大乱,唯独马超临阵不乱,操练士兵,打造装备,准备迎战。
徐庶劝文莱及三方势力主:“今函谷关马孟起兴练兵马,少兵守关,趁此时大军掩杀可破函谷关。”
公孙瓒大笑道:“那马家小儿有何能耐?日日操练兵马,何时攻入都破。今日才至晋阳,士卒皆累,且休一日,明日攻城为时不晚。”
曹操听了,若有所思。文莱一想:反正他们都不走,我一个人走也不一定可以赢。让徐庶先带二千兵打打看。于是派军侯周仓随徐庶领兵二千去攻函谷关。二千人到达函谷关,果如徐庶所料,关上兵少。徐庶下令士兵冲关门,上城墙。关上士兵发觉,举火为号,马超带训练完的士兵赶来守城。但来之前,士兵已放箭射杀马超军。城门久攻不破,损失士兵二十,斩敌兵一百,小胜一场。
马超细守城三日,发现徐庶出兵规律,出兵时死守,其余时间休息和训练。终于,精兵练成,配西凉马,称作“西凉铁骑”。一阵大败四军。“吾不听元直之言,只令二千军去攻函谷关。今铁骑练成,攻破函谷关难矣。”徐庶谦虚说:“是吾出兵规律暴露,使得马超铁骑练成。敌有西凉铁骑,公孙瓒有白马义从,足破西凉铁骑!”文莱听了,鼓舞士气,四军出兵一万发起第一轮的攻势。
文莱和徐庶、管亥做先锋,领兵三千先到关下。文莱大喝:“今四军兵五万,长安必破!请孟起休要挡道!”
马超大笑:“吾家马岱攻长安城,却是汝等击我堂弟马岱!有何言语可解释?万箭齐发!”
文莱命令大盾兵挡箭,边挡边向前攻击。马超这回得到了马腾称为“本部武将”的徐荣、胡轸、张辽和兵一万援助,完全不怕文莱军,令胡轸带兵出关迎敌。文莱见胡轸,并不认识,认为是个大将,让管亥出阵。徐庶和文莱商议:“管亥是我军大将,马超见已多次。定然要有铁骑突袭。令后方弓弩兵预备援助!传信与公孙瓒速速来援。”看着管亥和胡轸打起来,不一会儿,胡轸大败。文莱心想,这也不是什么厉害的武将,不要算了。于是军队继续攻城。城内马超见又是管亥,认为徐荣可以击败。于是让徐荣上阵。紧接着,徐荣被击败。胡轸再援助,文莱一箭射中,敌军慌乱救胡轸回关。马超大怒,放骑兵冲出阵。文莱大喜:敌军的骑兵是一个一个出来的,城门又大开,后方公孙瓒大将赵云领白马义从也来到阵前,骑兵在前,弓弩兵在中,文莱、管亥、徐庶率步兵在后。马超是被怒火冲昏了头脑,居然犯这等大错!铁骑出来一个,强弓硬弩射死一个,白马义从一大泼涌入关。马超军大乱,张辽奋勇杀敌,掩护马超逃离。徐荣、胡轸在慌乱中逃去长安。函谷关就这样因为马超的错误直接攻破。曹操、孙坚、公孙瓒大军到达函谷关,把晋阳的四万兵中三万带来函谷关驻扎,继续带一万到距离长安三百里的位置扎营。