5월 27일 저녁, 청나라 주력 군대가 산해관에 도달하였고, 이 곳에서 오삼계의 공식적인 항복을 받았다. 오삼계는 그의 병사들에게 등 뒤에 흰 옷감을 붙여 이자성의 반란군들과 구별할 수 있도록 하라고 지시하였다. 오삼계는 자신의 군을 이끌고 이자성의 반군들에게 진격하였다. 하지만 반군들의 무질서한 배치에도 불구하고, 오삼계는 반군의 방어선을 깨는데에 실패하였다. 오삼계 군대의 사기는 급격히 떨어졌고, 전투 중반에 이르러서는 거의 몰살당할 위기에 처하고 말았다.

도르곤이 싸움에 들어가기로 결정한 때가 바로 이때였다. 청나라 군대는 오삼계 군대의 우편을 지원하였으며, 이자성 반군의 왼편을 기병을 이용하여 몰살하였다. 반군들은 앞머리를 민 청나라의 기병들을 보자마자 공포에 질려 도망쳤으며, 반군들의 방어선은 무너졌다. 왼쪽 날개가 무너진 채로 후퇴하기 시작한 반군은 결국 사기가 급락, 대부분이 몰살당하는 최후를 맞았다. 이자성은 산해관에 도착했을 당시 청나라 군대의 존재를 몰랐을 가능성이 있다. 혹은 청나라 기병들의 군세를 제대로 몰랐을 가능성도 있다. 만약 그가 이 것들을 알았다면, 그렇게 무리하게 전투를 몰아붙이지는 않았을 것이라는 것이 학계의 관측이다.
오삼계는 무엇을 등 뒤에 부착하라고 명령했는가?
흰 옷