Trương Tâm, cô con gái nhỏ của Trương Đản và Mai Thị Dung, từ khi sinh ra đã mang một điềm gở không thể lý giải. Một vị thầy pháp từng phán rằng cô chính là hóa kiếp của bà Hạnh Thủy – người từng gây ra nghiệp chướng cho gia tộc họ Trương. Vì vậy, kiếp này, Tâm phải chịu cảnh cơ cực, luôn bị các linh hồn quấy nhiễu.
Thương con gái, Trương Đản đã mời vị thầy pháp trấn yểm để hóa giải nghiệp báo cho cô. Bà thầy pháp yêu cầu đặt cho Tâm một cái tên xấu để dễ nuôi hơn. Vì vậy, cái tên "Tấm" ra đời, chỉ một dấu sắc nhỏ, mang hàm ý nhỏ bé, hèn mọn.
Khi Tấm được 12 tuổi, cha mẹ cô nhận tin ở kinh thành rằng có người giữ lại tấm vải nhuộm do gia tộc họ Trương làm từ thời xa xưa, nay muốn trao đổi để lấy bạc. Trương Đản và Mai Thị Dung quyết định đến lấy vải, hy vọng khôi phục kỹ nghệ nhuộm vải thất truyền. Nhưng chuyến đi đó lại là định mệnh. Khi thuyền đến khúc sông Hoàng Giang, nó bất ngờ lật úp, khiến cả hai vợ chồng thiệt mạng.
Tấm trở thành trẻ mồ côi, được bà thầy pháp nhận về nuôi. Dù sống trong một gia đình đủ đầy, Tấm luôn phải chịu cảnh khổ cực. Bà thầy pháp và chồng – ông Trần – một năm sau sinh ra Kiều, đặt tên khác là Cám để cô dễ nuôi. Lo sợ Tấm sẽ mang nghiệp báo đến cho Kiều, bà thầy pháp luôn giữ khoảng cách với cô. Tấm càng bị đẩy vào tình thế khó khăn hơn, bởi nếu sống sung sướng, cô sẽ ngay lập tức phát bệnh nặng. Những người ngoài nhìn vào, không hiểu chuyện, chỉ cho rằng bà thầy pháp là một mụ dì ghẻ độc ác, nhẫn tâm.
Năm Tấm 16 tuổi, cô đang chăn trâu ở bờ sông Hoàng Giang thì bắt được một con cá bống nhỏ. Không muốn làm thịt, Tấm thả cá bống vào giếng nhà và ngày ngày cho nó ăn cơm. Tấm cảm thấy con cá bống chính là niềm an ủi duy nhất trong cuộc sống cô độc của mình.
Tuy nhiên, bà mẹ nuôi nhanh chóng nhận ra sự bất thường của con cá bống. Đây chính là ác ngư, linh vật tà ác đã từng gieo rắc tai họa cho làng Nam Xương. Bà thầy pháp sai Cám lừa Tấm đi chăn trâu xa, rồi lén xuống giếng giết cá bống. Khi Tấm trở về, chỉ còn lại bộ xương cá nằm rải rác.
Tấm khóc thương, oán trách Cám và mẹ nuôi. Sự căm hận đã đánh thức phần ác tính trong cô, khơi dậy bóng ma của bà Hạnh Thủy còn ngủ quên trong kiếp mới. Bà mẹ nuôi, nhận thấy Tấm sắp hóa quỷ, vội lấy bùa trấn yểm cô lại. Tuy nhiên, linh hồn bà Hạnh Thủy bắt đầu trỗi dậy, chờ cơ hội báo thù.
Năm Tấm đến tuổi cặp kê, Thái Tử đi tuần ngang làng Nam Xương. Lúc này, ác ngư sống lại, yểm một loại bùa chú vào đôi hài đỏ của Tấm. Trong một lần đi chợ, Tấm vô tình đánh rơi chiếc hài xuống dòng sông. Chiếc hài trôi đến đúng nơi Thái Tử dừng chân.
Nghe tin Thái Tử ban lệnh tìm người có thể mang vừa hài để trở thành vợ vua tương lai, cả làng đổ xô đến thử, nhưng không ai mang vừa. Đôi hài đã bị ác ngư yểm bùa, chỉ có Tấm mới có thể xỏ vừa. Khi Tấm được đưa vào cung, ác ngư đã thao túng linh hồn cô, biến Tấm trở thành người vừa hiền dịu vừa bí hiểm, khiến Thái Tử say mê không dứt.
Sau khi Tấm rời làng, bà mẹ nuôi lo sợ cô sẽ quay lại báo thù. Đúng như linh cảm, Tấm cùng đoàn xe ngựa từ cung trở về Nam Xương, mang tâm thế sẽ diệt trừ hai mẹ con Cám. Bà mẹ nuôi, hiểu rõ tính cách của Tấm, đã chuẩn bị một pháp trận trên cây cau trước nhà.
Khi Tấm trèo lên cây cau, bà giật dây, khiến Tấm té xuống và chết tại chỗ. Thái Tử nghe tin dữ thì đau buồn tột độ. Nhưng đêm hôm sau, Tấm tái sinh thành một con chim Hoàng Anh, thực chất là Quỷ Điểu, ngày đêm hút máu Thái Tử để duy trì mạng sống.
Bà mẹ nuôi, biết chuyện chẳng lành, dẫn Cám tiến cung thăm Tấm. Theo lời mẹ, Cám đập chết chim Hoàng Anh trong đêm. Bà mẹ nuôi dùng phong ấn cuối cùng, nhốt linh hồn của Tấm vào một quả thị lớn. Nhưng một lão già hái quả thị về nhà, không hay biết, bị Tấm thoát ra và nuốt chửng.
Tấm trở lại hoàng cung, lần này mang theo một khí chất lạnh lùng và hung hãn. Cô gieo rắc nỗi kinh hoàng khi liên tiếp có những người mất tích bí ẩn trong cung. Thái Tử mời bà mẹ nuôi và Cám vào cung, mong hóa giải oán thù giữa họ.
Tấm, trong cơn cuồng nộ, định luộc Cám và lột da bà mẹ nuôi. Nhưng khi bà mẹ nuôi bật khóc, nói rằng từ khi Tấm té từ cây cau, linh hồn ác quỷ bên trong cô đã tan biến. Những gì Tấm làm sau đó đều do chính lòng ganh ghét, đố kỵ từ chính bản thân cô.
Nghe vậy, Tấm bàng hoàng. Cô nhận ra rằng, sự thù hận trong cô không còn là do linh hồn nào thao túng, mà chính là hệ quả từ nỗi đau và sự bất công mà cô phải chịu đựng.
Tấm biến mất trong đêm, không ai biết cô đi đâu. Thái Tử, dù đau lòng, ra lệnh hủy hết những dấu tích liên quan đến Tấm, để câu chuyện được chôn vùi. Bà mẹ nuôi và Cám trở về làng, nhưng bóng dáng của ác ngư vẫn thấp thoáng trên dòng Hoàng Giang, như một lời nhắc nhở rằng nghiệp báo không bao giờ kết thúc.