West Coast came back from a mid-final term deficit to get over the top of Richmond, with a last-minute Josh Kennedy goal from the boundary line securing the win at Optus Stadium on Sunday night.
The Tigers built a 22-point lead halfway through the final term but were mowed down by an Eagles team that charged home with the last four goals of the match, winning 13.7 (85) to 12.9 (81).
Kennedy was the hero for West Coast, diving for the mark inside 50 and then snapping the match-winning goal from 35m on the boundary to cap an outstanding night for the champion forward.
Young Richmond star Shai Bolton looked to have given the Tigers a big enough break to drive them to their second straight win in Perth, but the Eagles' efficiency in front of goal got them home.
Jake Waterman, Jamie Cripps, Oscar Allen and then Kennedy all converted set shots in the final 10 minutes to secure one of the club's great home-and-away wins, given what was at stake.
Shannon Hurn was a hero at the other end of the ground, taking a desperate intercept mark on the last line after Richmond superstar Dustin Martin drove the ball inside 50 in the dying seconds.
The Sunday night showdown between two contenders delivered, with both teams putting their weapons on full display.
Kane Lambert returned in great touch for the Tigers and finished with 27 disposals and two goals, converting on the run in the final quarter to give his team a 17-point lead.
Martin inserted himself at critical times and looked to have the Tigers rolling to victory when he dribbled home one of his two goals from the boundary early in the fourth term.
Nick Vlastuin was a thorn in the Eagles' side all night and held Jack Darling goalless and to just seven disposals.
It was not enough for the back-to-back premiers, however, who fell victim to West Coast.
WEST COAST 3.0 7.1 8.3 13.7 (85)
RICHMOND 2.2 7.5 9.9 12.9 (81)
West Coast: Kennedy 4, Waterman 2, Cripps 2, Allen, Naitanui, Jones, Ryan
Richmond: Riewoldt 2, Coleman-Jones 2, Lambert 2, Martin 2, Graham, Aarts, Castagna, Bolton
West Coast: Kennedy, Naitanui, Redden, Sheed, Hurn, Foley, L.Edwards
Richmond: Lambert, Vlastuin, Martin, Houli, Bolton, Short
West Coast: Jack Petruccelle (hamstring) replaced in the selected side by Jake Waterman
West Coast: Xavier O'Neill (unused)
Richmond: Hugo Ralphsmith (unused)
Crowd: 50,834 at Optus Stadium