ในปี ค.ศ. 1841 โซโลมอน นอร์ธัป (ชูอิเทล เอจิโอฟอร์) เป็นเสรีชนชาวแอฟริกันอเมริกัน ทำงานเป็นช่างไม้และมือเล่นไวโอลินผู้มีฝืมือ อาศัยอยู่กับภรรยาและบุตรสองคนที่ซาราโตกาสปริงส์ รัฐนิวยอร์ก ต่อมามีชายสองคน (สก็อต แม็กไนรีย์และทาราน คินเลียม) เสนองานเป็นนักดนตรีเป็นเวลาสองสัปดาห์กับโซโลมอน แต่กลับลากเขาไปจนโซโลมอนสลบ เมื่อตื่นขึ้นมาก็พบว่าตัวเองติดโซ่ตรวนกำลังจะถูกขายเป็นทาสในอีกไม่ช้า โซโลมอนถูกส่งไปนิวออร์ลีนในชื่อ “แพล็ต” ในฐานะทาสผู้หลบหนีจากจอร์เจีย หลังจากถูกรุมทำร้ายอยู่เนือง ๆ เจ้าของโรงฝ้ายชื่อวิลเลียม ฟอร์ด (เบเนดิกต์ คัมเบอร์แบทช์) ซื้อเขาไป โซโลมอนกับวิลเลียมซึ่งเป็นนายผู้ใจบุญอยู่ด้วยกันได้ดี โดยโซโลมอนได้ทำทางน้ำให้การขนส่งท่อนซุงในหนองบึงเป็นไปได้อย่างรวดเร็วและเสียค่าใช้จ่ายน้อยที่สุด วิลเลียมให้ไวโอลินแก่โซโลมอนเพื่อเป็นการตอบแทน แต่ช่างไม้ชื่อจอห์น ทิบีตส์ (พอล ดาโน) ไม่พอใจและเริ่มคุกคามฟอร์ดด้วยคำพูดต่าง ๆ
เหตุการณ์ระหว่าทิบีตส์และนอร์ธัปเริ่มรุนแรงขึ้น ทิบีตส์เริ่มทำร้ายนอร์ธัป นอร์ธัปสู้กลับ เพื่อเป็นการแก้แค้นทิบีตส์และเพื่อนของเขาทำร้าย นอร์ธัป โดยการแขวนคอ ให้ยืนด้วยนิ้วเท้านานหลายชั่วโมง ฟอร์ดอธิบายว่าเพื่อให้นอร์ธัปปลอดภัย นอร์ธัปต้องถูกขายให้กับเอ็ดวิน เอปส์ (ไมเคิล ฟาสเบนเดอร์) นอร์ธัปพยายามอธิบายว่าเขาเป็นเสรีชน แต่ฟอร์ดปฏิเสธที่จะรับฟังโดยอ้างว่าเขามีหนี้ต้องชำระในการซื้อนอร์ธัปมา เมื่อนอร์ธัปไปอยู่กับเอปส์ เอปส์เชื่อว่าตามพระคัมภีร์สามารถลงคนเป็นทาสและทำร้ายทาสได้ ทาสทุกคนต้องเก็บฝ้ายให้ได้สองร้อยปอนด์ทุกวัน มิเช่นนั้นจะถูกทำร้าย ทาสหญิงชื่อแพตซี (ลูพีตา ญองอ) ผู้เก็บฝ้ายได้มากกว่าห้าร้อยปอนด์ต่อวันได้รับคำชมอย่างมาก ในขณะที่เอปส์ก็ข่มขืนเธออยู่บ่อยครั้งและดูเหมือนจะหลงรักเธอเกินกว่าจะรู้ผิดชอบ ภรรยาของเอปส์ (ซาราห์ พอลสัน) ซึ่งอิจฉาแพตซีอยู่แล้วก็เริ่มทำให้แพตซีขมขื่นรวมทั้งทำร้ายเธอด้วย เหตุการณ์ยิ่งร้ายลง ทำให้แพตซีอยากตายและขอให้นอร์ธัปฆ่าเธอ นอร์ธัปปฏิเสธ
ต่อมาเกิดเหตุโรคระบาดในต้นฝ้ายทำให้โรงฝ้ายของเอปส์ไม่ได้ผลผลตเท่าที่ควร เอปส์เห็นว่าเป็นความผิดของทาสที่มาใหม่ผู้เป็นโรคระบาดจากพระเจ้า เอปส์จึงให้เจ้าของโรงฝ้ายใกล้กันเช่าตัวนอร์ธัปไปตลอดฤดู เขาได้รับความเชื่อมั่นจากเจ้าของโรงฝ้ายใหม่ผู้ยอมให้เขาเล่นซอในงานฉลองครบรอบแต่งงานของเพื่อนบ้าน และเก็บค่าจ้างไว้เอง เมื่อเขากลับมาที่โรงนาของเอปส์ เขาพยายามให้เงินกับอาร์มสบี (การ์เรต ดิลลาฮันท์) คนงานผิวขาวและอดีตผู้ดูแลโรงนาให้ส่งจดหมายไปให้เพื่อนนอร์ธัปที่นิวยอร์ก อาร์มสบีรับว่าจะส่งจดหมายให้และเอาเงินไป แต่กลับหักหลังนอร์ธัป นอร์ธัปแก้ตัวกับเอปส์ไปได้อย่างหวุดหวิดว่าเรื่องจดหมายไม่ใช่เรื่องจริง และต่อมาได้เผาจดหมายสู่อิสรภาพทิ้งทั้งน้ำตา นอร์ธัปเริ่มทำงานสร้างศาลาสวนกับกรรมกรชาวแคนาดาชื่อบาส (แบรด พิตต์) บาสพูดถึงความไม่เห็นด้วยในระบบทาสกับเอปส์ว่า เอปส์ไม่ได้สนใจคนที่ทำงานให้เขาเลย กลับมองเป็นสมบัติชิ้นหนึ่ง ทำให้เอปส์ไม่พอใจอย่างยิ่ง
วันหนึ่งเอปส์โกรธที่พบว่าแพตซีหายไปจากโรงฝ้าย แพตซีกลับมาและบอกว่าไปเอาสบู่จากคุณนายชอว์ (อัลเฟร วูดดาร์ต) เนื่องจากตัวเองไม่สบายเพราะมีกลิ่นเหม็นที่ตัวและแมรี เอปส์ไม่ยอมให้สบู่ เอปส์ไม่เชื่อเรื่องนี้และให้เธอถอดเสื้อผ้ามัดกับเสา เอปส์สั่งให้นอร์ธัปโบยแพตซีตามคำยุของภรรยา นอร์ธัปทำแบบไม่รุนแรง ทำให้เอปส์เอาโบยมาเองจนทำให้แพตซีบาดเจ็บสาหัส นอร์ธัปพังไวโอลินหลังจากนั้น และในขณะที่กำลังสร้างศาลาสวน เขาถามบาสว่ามาจากที่ไหน บาสตอบว่าแคนาดา นอร์ธัปจึงสารภาพเรื่องที่เขาถูกลักพาตัวและขอให้บาสนำจดหมายไปส่งที่ซาราโตกาสปริงส์อีกครั้ง บาสบอกว่าเขาเสี่ยงชีวิตที่จะทำงานนี้ แต่จะจัดการส่งให้ หลังจากนั้นไม่นานนายอำเภอมากับชายคนหนึ่งมาตามหานอร์ธัป นายอำเภอถามคำถามชุดหนึ่งเพื่อยืนยันชีวิตความเป็นอยู่ในนิวยอร์กของเขา เขาจำได้ว่าคนที่ตามมาด้วยคือผู้ติดตามของนายอำเภอที่เคยเจอที่ซาราโตกา และนายอำเภอมาเพื่อปลดปล่อยเขา ทั้งสองสวมกอดกันและรีบเดินทางไปจากที่นั่นทันที เป็นที่เกรี้ยวกราดแก่เอปส์และเป็นที่ไม่พอใจของแพตซี หลังจากเป็นทาสมาสิบสองปีนอร์ธัปได้กลับคืนความเป็นไทอีกครั้ง ตอนที่เขาเดินเข้าบ้านเขาพบครอบครัวของเขา รวมถึงลูกสาวที่มีหลานชายชื่อเดียวกับเขา ในฉากจบมีการพูดถึงว่านอร์ธัปและที่ปรึกษากฎหมายของเขาไม่สามารถจะนำคนที่ต้องรับผิดชอบต่อการเป็นทาสของเขามาลงโทษได้ และมีการกล่าวถึงประเด็นเรื่องมรณกรรมและการฝังศพของเขา