在小说《三国演义》中,公元190年,
董卓进入汉都洛阳,控制朝廷,专擅国政,为政暴虐。同年,几个军阀和地方官组成联盟对抗董卓,以
袁绍为盟主。联军先攻去洛阳途中的山关之一汜水关。董卓守汜水关的部将
华雄被联军的
关羽所杀,联军夺关。联军进军距洛阳约50华里的
虎牢关。
董卓亲自和
吕布、
李儒、
樊稠、
张济率15万大军东进
虎牢关,又给
李傕、
郭汜发兵5万增援汜水关。在虎牢关,董卓命吕布率领先头部队3万,在关前驻防扎营。
联军决定分兵一半迎战董卓军。八路诸侯王匡、
桥瑁、鲍信、
袁遗、
孔融、张杨、
陶谦、公孙瓒各率本部军马在袁绍指挥下进军虎牢关。王匡先到,部将
方悦主动与吕布单挑。不足五合,方悦被杀,吕布冲入王匡军,杀了一些溃兵。幸好桥瑁和袁遗赶来救援王匡。他们决定撤退到关外30华里处下寨。
很快,其余五路联军诸侯也来到大营,商议认为吕布不可战胜。这时,吕布军在寨外列阵,八路诸侯迎战。张杨部将
穆顺纵马杀向吕布,当即被杀。
孔融部将
武安国杀出挑战吕布。战到十合,吕布以戟砍断武安国手腕。联军杀出救了武安国,双方各自归营。曹操认为十八路诸侯应该合计败吕布之策,一旦吕布战败,
董卓易除。
此时,吕布再次出阵,嘲笑联军。
公孙瓒亲自战吕布,战不数合败走。吕布追之,却被称他为“
三姓家奴(“三姓”指吕布
本姓及其两位义父的姓)”的
张飞拦住。吕布战张飞五十合,不分高低。关羽舞青龙偃月刀杀出帮张飞作战。三人又战大约三十合,
刘备也持雌雄双股剑加入了战斗。
三位结义兄弟将吕布围在中心,轮番从不同方向攻吕布。吕布无力击败三人,于是佯击刘备,当刘备闪躲时乘隙脱身,奔回
虎牢关。三兄弟追吕布,但吕布所骑
赤兔马太快,追不上。他们看到
董卓后,放弃了追逐。张飞试图杀上关去杀了董卓,但关上箭如雨下,张飞只得回。
董卓新败后,问计于
李儒。李儒答,全军应该撤退到西面的长安,并带上洛阳的市民及朝廷。董卓对此很乐意,不顾一些人的强烈反对,执行迁都。他迫使朝廷和洛阳市民随他迁往长安,以军队监视他们。离开前,董卓派兵夺取洛阳富户的财物,将洛阳夷为平地。时任董卓汜水关守将的赵岑得知主公撤走,就弃了关。
历史上,联军和
董卓还是有对抗的,董卓和吕布都亲自参战,但发生在南面的
大谷关,联军只有孙坚军参战。此战中,吕布、董卓皆为孙坚所败。《
后汉书·董卓传》记载吕布两次败于孙坚:
此战尽管是虚拟之作,
罗贯中对小说中第一勇士吕布与结义三兄弟的对决的注目描写使之成为中国流行文学最著名的故事之一。
粤剧等戏曲都有和此战有关的小品,通称“
三英战吕布”。是刘关张成名之战。