艾尼斯·戴尔·玛(希斯·莱吉尔饰)在怀俄明州与犹他州交界处的一个穷苦的小农庄里长大。他的父母死于车祸后他的哥哥和姐姐抚养他。父母为他们只留下了24美元现金和一个被抵押了两次的小庄园。艾尼斯没有读中学,他的少年是在劳苦和穷困中渡过的。他与阿尔玛·比尔(米歇尔·威廉姆斯饰)订婚,他不断地节省钱想以此买一点地。1963年,还不到20岁,他就在一个介绍农庄工作的公司里报到了。他来到了怀俄明的一个养羊的农场,在这里他结识了同岁的杰克·崔斯特(杰克·格林哈尔饰)。杰克已经在这个农场里工作了一个夏天了。这个英俊的、深色頭髮的、活泼爱笑的人特别热衷于驯牛。两人接收了上千只母羊和羊羔,要将这些羊赶到断背山上没有树木的草原上去。
艾尼斯留在宿营地,杰克每天晚上要与羊一起过夜,他必须每天好几个钟头在营地和草原之间跋涉。两人意气相投,在篝火旁他们谈论马、驯牛和打架,很快就成了好朋友。两人都非常高兴在这里居然找到了这样的好朋友。艾尼斯甚至帮助杰克,与杰克轮流晚上去看羊。一晚他们酒喝多了,无法回到羊群所在地,艾尼斯就露宿在宿营地的篝火旁。半夜气温骤降,篝火也熄灭了,杰克就让艾尼斯和他在帐篷里挤一下。半梦半醒之间,他们擦出了火花,释放了一些积聚已久的感情。天亮后,两人都没有提起那夜的性愛,将它当作是一件离谱的事情。当然两人都不承认自己是同性恋。但很快他们就把放羊的事忘了,不但在夜里在帐篷里,就是在白天开满鲜花的草原上、傍晚在熊熊的篝火傍他们也互相爱对方。八月,山顶飞雪,他们将羊群赶下山。断背山共同的时间结束了,艾尼斯非常悲伤,但他与杰克还是分手了。
艾尼斯回到阿尔玛身边,三个月后两人结婚了。他们移居到懷俄明州的瑞佛頓。四年后两人已经有了两个女儿,他早就不期望重见杰克了。就在这时他收到一張明信片,说杰克即将到瑞佛頓。艾尼斯急不可耐,穿上了他最好的衬衫去接他的好朋友。两人见面时的激情促使他们炙烈相吻,却没有想到阿尔玛在楼上的窗户边看到了这个景象。杰克在这段时间里在德克萨斯州成为牛仔,他与一个富有工业家的女儿璐伦(安妮·海瑟薇饰)结婚,并有一个八个月的儿子。杰克对他的儿子非常骄傲。虽然如此,他和艾尼斯还是喝醉了酒,在20分钟里就跑到了附近的一个汽車旅館里去了。虽然两人炙爱,但他们都不想离弃妻子和儿女。尤其艾尼斯反对两人一起生活,他还记得他小时候看到一个同性恋的农工被人用一个汽车轮胎撬棍殴打至死,弃尸荒野。他们决定从此以后每年以一起钓鱼为由见两次面,共同度过一些秘密的幸福时光。阿尔玛知道艾尼斯的秘密,而且她不愿再与艾尼斯一起过穷生活。当他们的女儿九岁和七岁的时候她与艾尼斯离婚,与她打工的当地食品店的老板结婚。
艾尼斯很快又开始做零工了,他在怀俄明的农庄间流荡。此后几年中他与杰克定期相遇,两人一起踏遍了附近的山峦河流,但却再也没有回到断背山。日月如梭,杰克越来越希望能和艾尼斯长相厮守,而艾尼斯则担心他们的结局而一再拒绝。杰克曾试图结交新朋友,也曾去过墨西哥嫖妓,但他却无法忘记艾尼斯。艾尼斯也遇到过喜欢他的姑娘,却总是无法爱上她。1983年,两人第一次相遇的二十年后,他们碰头时艾尼斯说下一次碰头要推迟,因此两人吵架。他们还是友好地分手了。几个月后艾尼斯得到了杰克去世的消息。据说杰克在为轮胎打气时出了事故,车轮的辐条蹦出打在了他的脸上。艾尼斯想起轮胎撬棍的故事,他怀疑杰克真的是因为事故死的。
杰克的最后的愿望是将自己的骨灰撒在断背山上,为此艾尼斯去杰克的父母家。在那里他听说杰克每年看他父母时都提到他要离婚,与艾尼斯一起搬到附近的一个小棚里,经营他父母的农庄。但他死前几个月里他突然决定与他在德克萨斯的一个邻居一起来做这件事。因此艾尼斯猜到杰克的死可能的确不是事故。在杰克的小屋里他找到了两人第一次相遇时杰克穿的衬衫,里面套着他当时穿的衬衫,袖口还有他们分别时扭打的血迹。当年他以为把这件衬衫丢了,结果是被杰克拿走了。杰克的父亲执意将杰克的骨灰埋葬在家族墓园里,艾尼斯只得空手而归。他的大女儿来邀请他参加她的婚礼,两个相爱的年轻人可以走到一起。而艾尼斯只能将一张断背山的明信片钉在他的旅行挂车的墙上,将那两件老衬衫挂在明信片下。他轻声地说:“杰克,我发誓……”可此时誓言又有什么用处呢……斯人已去……