Ngày xưa có một người đàn bà hiếm muộn, đi cầu tự khắp nơi mới sinh được một đứa con trai, đặt tên là Tống Trân. Người ta bảo cậu vốn là một vị tiên đồng phạm lỗi, bị đày xuống trần gian chịu khổ một thời. Quả thật, cậu mới lên ba thì cha mất, nhà nghèo đến nỗi không còn một đấu gạo. Mẹ ốm yếu, không làm được việc nặng. Năm lên tám, Tống Trân phải dắt tay mẹ đi khắp làng trên xóm dưới, gõ cửa từng nhà mà xin cơm. Xin được bát nào, cậu cũng để mẹ ăn trước, còn mình ăn phần thừa. Đêm nằm ở mái đình, cậu vẫn ôm mấy cuốn sách cũ nhặt được, nhẩm từng chữ dưới ánh trăng.
Trong vùng có ông Trương viên ngoại giàu nhất xứ, nhà ngói mấy dãy, ruộng thẳng cánh cò bay. Ông có cô con gái tên là Cúc Hoa, nết na lại hay thương người. Một hôm, mẹ con Tống Trân dừng trước cổng nhà họ Trương. Cúc Hoa thấy chàng trai tuy áo rách mà ăn nói lễ độ, mắt sáng như người có chữ, liền đong cho một thúng gạo đầy. Từ đó, cứ mỗi lần mẹ con chàng đi qua, nàng lại lén mang gạo ra cho. Nàng hỏi chuyện, mới biết chàng vừa đi xin vừa tự học. Thương cảnh ấy, rồi phục cái chí ấy, trong lòng cô gái nhà giàu chẳng biết từ lúc nào đã có hình bóng chàng trai nghèo.
Cúc Hoa thưa với cha, xin được làm vợ Tống Trân. Trương viên ngoại nổi giận đùng đùng: Con nhà ta mà đi lấy thằng ăn mày, để thiên hạ cười vào mặt ta à? Nàng quỳ mà khóc, nói người nghèo chưa chắc nghèo mãi, người hiếu thảo ắt có ngày nên. Ông cha khuyên không được, mắng không xong, bèn đuổi con ra khỏi nhà, không cho mang theo một thứ của cải nào. Cúc Hoa chỉ xách một tay nải nhỏ, đi thẳng đến túp lều của mẹ con Tống Trân. Từ hôm ấy, nàng làm dâu nhà nghèo. Nàng dậy sớm thổi cơm, đi cấy thuê, dệt vải, nuôi mẹ chồng già yếu, lại dành từng đồng để chồng mua giấy mua bút, yên tâm mà đèn sách.
Mấy năm trôi qua, triều đình mở khoa thi. Cúc Hoa bán đi chiếc khăn cuối cùng, gói cho chồng nắm cơm, tiễn chàng lên kinh. Tống Trân vào trường, văn hay chữ tốt, đỗ đầu thiên hạ, được vua ban áo mũ trạng nguyên. Vua thấy chàng tài giỏi, muốn gả công chúa cho. Tống Trân quỳ tâu: Muôn tâu bệ hạ, thần đã có vợ, người vợ ấy nuôi mẹ thần, nuôi thần ăn học từ thuở hàn vi. Thần không dám phụ. Vua khen là người có nghĩa, nhưng công chúa thì giận lắm. Nàng ngày đêm xui cha, rằng trạng nguyên giỏi như thế thì nên cử đi sứ phương xa. Thế là vua sai Tống Trân sang nước Tần, một chuyến đi không biết ngày về.
Ngày Tống Trân lên đường, Cúc Hoa ra tận bến sông tiễn chồng. Chàng nắm tay vợ mà dặn: Nàng ở nhà thay ta phụng dưỡng mẹ già. Ta đi lần này, sống thì nhất định trở về với nàng. Cúc Hoa gạt nước mắt: Chàng cứ yên lòng mà đi. Mẹ chàng cũng là mẹ thiếp. Dù bao nhiêu năm, thiếp cũng đợi. Con thuyền rời bến, chở chàng trạng trẻ sang miền đất lạ. Còn người vợ trở về túp lều cũ, lại cấy lại dệt, chăm từng bữa cháo cho mẹ chồng, đêm đêm thắp đèn ngóng về phương xa.
Sang tới nước Tần, vua Tần thấy sứ thần nước nhỏ thì coi khinh, tìm đủ cách làm khó, có lúc còn muốn hại. Người ta đưa ra những vụ kiện rắc rối nhất mà các quan nước Tần xử mãi không xong, thách sứ thần phân xử. Tống Trân nghe hai bên, hỏi vài câu, rồi chỉ ra đúng kẻ gian người ngay, khiến ai cũng phải tâm phục. Hết vụ này đến vụ khác, chàng đều xử sáng như gương. Vua Tần đổi giận làm mừng, phong chàng là Lưỡng quốc trạng nguyên, trạng nguyên của cả hai nước, lại muốn gả công chúa nước Tần. Tống Trân lại từ chối như đã từ chối vua nhà. Vua Tần quý tài, cứ giữ chàng ở lại, một năm, hai năm, rồi bảy năm trôi qua.
Ở nhà, Trương viên ngoại thấy con rể đi biền biệt, bèn nói Tống Trân chắc đã bỏ xác nơi đất khách. Ông nhận lễ hỏi của viên Đình trưởng trong làng, ép Cúc Hoa phải đi bước nữa. Nàng một mực không nghe: Chồng con còn sống, con đâu thể lấy người khác. Ông cha nhốt nàng vào buồng tối, đánh mắng, bỏ đói. Mẹ chồng nàng bị đuổi xuống ở chuồng trâu, sống nhờ mấy bát cơm người làng lén mang cho. Ngày cưới bị ép tới gần. Cúc Hoa trốn ra được, một mình lên núi Sơn Vi, viết một lá thư kể hết nỗi oan, rồi ngồi khóc bên vách đá, chỉ muốn nhảy xuống vực mà tỏ tấm lòng.
Bỗng trong rừng có tiếng động. Một con hổ lớn bước ra, mắt hiền như mắt người. Đó là thần Sơn Tinh cảm lòng chung thủy của nàng mà hóa thân xuống. Hổ cúi đầu trước mặt Cúc Hoa, như muốn nói: Đừng tìm cái chết, hãy đưa thư đây. Nàng run run buộc lá thư vào cổ hổ. Hổ vượt núi, băng rừng, lội biển, chẳng mấy ngày đã sang tới kinh đô nước Tần, đặt lá thư trước mặt Tống Trân. Đọc thư vợ, chàng khóc không thành tiếng, vào tâu hết với vua Tần. Vua Tần cảm động, nói: Người vợ như thế, ta nào nỡ giữ chồng nàng. Liền cho Tống Trân về nước trước hạn, lại ban cho thuyền tốt và lộc hậu.
Đúng ngày nhà họ Trương mổ lợn mổ bò, bày cỗ linh đình gả con gái cho Đình trưởng. Cúc Hoa mặc áo đỏ mà mặt trắng bệch, trong tay áo giấu sẵn con dao nhỏ, định giữa tiệc sẽ tự vẫn cho trọn đạo. Giữa lúc khách khứa đang nâng chén, ngoài cổng vang tiếng chiêng, cờ quạt rợp đường. Một vị quan áo mũ chỉnh tề bước vào: chính là Tống Trân. Cả đám cưới lặng ngắt. Viên Đình trưởng lủi mất. Trương viên ngoại xấu hổ, cúi gằm mặt, chẳng nói được câu nào. Tống Trân đến bên vợ, rồi chạy xuống chuồng trâu cõng mẹ lên nhà trên. Ba mẹ con vợ chồng ôm nhau mà khóc, nước mắt lần này là nước mắt mừng.
Chuyện chưa hết. Công chúa nước Tần vẫn nhớ thương chàng trạng nước Nam, liều mình vượt biển sang tìm. Giữa đường gặp bão, thuyền vỡ, nàng trôi dạt vào một bãi cát vắng, được bầy hươu nai quây quần che chở. Một hôm Tống Trân đi săn, tình cờ gặp nàng, bèn đưa về nhà. Cúc Hoa nghe hết sự tình, thương người con gái đã vì chồng mình mà suýt bỏ mạng ngoài biển, liền vui lòng nhận nàng làm em. Từ đó, nhà Tống Trân êm ấm, mẹ già được phụng dưỡng tới lúc trăm tuổi. Người đời kể chuyện này để nhớ rằng: tấm lòng thủy chung của Cúc Hoa, dẫu cha ruột ép uổng, dẫu bao năm xa cách, vẫn không hề lay chuyển.