명나라 남양의 양 현은 이부상서의 자손으로 이상적인 인물이었고, 그의 부인 왕씨도 훌륭한 사람이었으나 나이가 오십이 되어도 자식이 없어 고심한다. 양 현이 시름을 하며 술을 마시고 졸던 중 꿈에 선동이 나타나, '천상에서 죄를 지어 인간으로 당신의 자식이 되고자 한다'는 꿈을 꾸는데, 동시에 부인도 같은 꿈을 꾸고 잉태하여 아들을 낳으니, 산백이라 하였다. 산백은 대단히 총명하였으며, 열 네살에 운향사로 삼년 공부를 가는 길에 자기와 같은 또래의 공부하러 오는 도령을 만나는데, 이 도령을 산백은 남장한 여자로 의심한다. 이 남장한 추 양대도 산백과 마찬가지로 거의 같은 때 선녀가 꿈에 나타나 현생하는 것으로 태어났으나, 부모는 딸이어서 아쉬워 하며 남장을 시켜 키웠던 것이다.

절에서 한 방을 같이 쓰면서 둘은 정이 들었는데, 삼년 공부가 거의 끝날 무렵 어느날 밤, 추 양대가 여자임을 산백이 알자 추 양대는 나중에 정식으로 결혼하자고 하고는 다음날 새벽 절을 떠나 버린다. 한 달을 슬퍼 하던 산백이 평강으로 추 양대를 찾아 가니,추 양대는 부모의 뜻에 따라 재상 심천의 등과한 아들 심 의랑과 혼인을 준비하고 있었다. 산백과 추 양대가 껴안고 울다가 산백은 집으로 돌아 오고 추 양대는 죽기로 마음 먹는다.

집에 돌아 온 산백이 병이 나자, 부친이 다시 추 양대를 찾아 갔으나 이미 결혼식은 시작되었다. 이에 산백이 추 양대에게 보내는 편지를 쓰고 병으로 죽는다. 시댁으로 향하는 신행 추 양대가 산백의 편지를 받고 길가에 만들어진 산백의 무덤에 제사하던 중, 갑자기 묘가 갈라져 그 속으로 떨어지고 묘가 닫힌다. 신랑 심 의랑이 묘를 파헤치니 산백과 추 양대가 서로 껴안은 채 죽어 있어, 두 시체를 따로 묘를 만들어 묻자 두 묘에서 칡넝쿨이 자라 서로 닿는다. 이에 하늘의 여러 신들이 의논하여 두 사람을 다시 살리니,다시 살아난 두 사람은 결혼을 한다.

북방의 강인한 오랑캐 민족이 쳐들어 와 명이 패배하자, 문.무과에 동시에 산백이 급제, 대장군으로 출전하여 오랑캐 가달왕과 싸워 이긴다. 두 사람은 평생을 부귀 영화를 누리다 팔순에 죽는다.