公元前627年春,秦军抵达滑国(今河南省偃师县),遇到郑国的商人弦高,机智的弦高假借郑国国君之命,以12头牛犒劳秦军,弦高说:“听说秦国将要征讨郑国,我们国君正加强守备,派我用这十二头牛来犒赏贵军。我们郑国不富裕,如果秦军要停留,我们就准备一天的食物,如果秦军要继续前行,我们就在晚上做好警卫工作。”弦高又派人赶紧回到郑国去报告秦军来袭击的消息。郑国的国君郑穆公得到秦军来袭击的消息,派人到秦军的驻地察看,只见秦军已经准备好了武器、车辆,马也喂得饱饱的,一副随时作战的样子。于是郑穆公派皇武子告诉秦将杞子等说:“秦军帮我们郑国守卫国都已经很长时间了,我们郑国是小国,已无力再供给你们东西了。听说你们最近要离开郑国,我们北部有原圃,就像你们秦国的具圃。你们可以在原圃猎取麋鹿以解决吃饭问题,也可以减轻我们的负担,如何?”杞子等人知道袭击郑国的计划已经被郑国人察觉,袭击的计划要泡汤,而建议秦军长途奔袭是他们几个的意思,罪责不小。他们既不敢在郑国停留,又不敢回秦国。于是,杞子逃奔齐国,逢孙、杨孙逃奔宋国。孟明见弦高来犒劳秦军,知道郑国已经有所准备,袭击的计划无法再实施了。如果改变计划,围攻郑国,兵力又显然太少;况且秦军孤军深入,又无后援,不能持久。但长途奔袭一千多里,一无所获,实在不甘心,便在回师途中顺便灭掉了滑国。
滑国是晋国的邻国,和晋国是同姓。晋国的大臣们听说秦国灭了滑国,十分气愤,都说秦国欺人太甚,应该好好教训一下。大臣栾枝说:“秦国对我们国君有恩,现在我们的国君刚去世不久,我们就去攻打秦国,心中还有去世的国君吗?”中军统帅先轸不同意栾枝的说法,他说:“我们的国君刚刚去世,秦国不派人来吊唁,反而在我们悲伤的时候攻打我们的同姓邻国,他们如此不讲理,我们还讲什么恩惠呢。我听说‘一天放走敌人,将造成几辈子的祸患’,这次秦军兴师动众、长途跋涉,对我们来说实在是天赐良机,千万不可错过。我们这次攻打秦军,是为晋国的子孙后代打算,我想我们去世的国君也会同意吧!”即位不久的晋襄公于是发布命令,让晋军把丧服都染成黑色,渡过黄河,到崤山伏击秦军。
秦军的车辆满载着从滑国抢来的财宝,一路往西而来。夏初四月,秦军来到渑池,从渑池往西就是地势险要的崤山。骞叔的儿子白乙对主帅孟明说:“崤山快到了,咱们得小心点。”孟明回答:“我们走了一千多里都没事,何况过了崤山就是我们秦国的地盘,有什么可怕的?”西乞说:“将军的话没错,不过我们还是小心点好。”孟明觉得他们的提醒也对,便把秦军分为四个分队,每个分队相隔二里路,继续向崤山方向前进。
晋军在崤山的东西两头布置了精兵各五千,把秦军放进崤山的险峻之处,然后前后夹击。秦军长途跋涉,人困马乏,前有强敌,后有劲旅,一边是险峰峻石,另一边是万丈深渊,千军万马根本施展不开,只有被动挨打的份儿,死伤不计其数,秦军全军覆没,连秦军的主帅孟明都当了晋军的俘虏。晋军带着俘虏和战利品,到晋襄公的大营报捷,晋军的欢呼声如雷,声传数里。
崤山之战,晋军渡河远征,大获全胜,这是中国军事史上第一个伏击战。晋国控制了黄河三角地带,由此遏制了秦国东进中原的企图,使秦国不得向东发展,暂时放弃了东出崤函的打算,开始向西发展,中原诸国获得休养生息的机会。对晋国来说,崤山之战是晋国霸业的巩固之战,晋国挟城濮之战的余威,在崤山之战中全歼秦军主力,在中原诸侯国中的威望更高了,霸主的地位更加稳固。

