Chelsea slumped to a first defeat under Thomas Tuchel in an extraordinary match at Stamford Bridge, where Thiago Silva was sent off.
Christian Pulisic put them ahead just before Silva, back in the side after two months out injured, was dismissed.
Matheus Pereira scored twice in first-half injury time and second-half goals from Callum Robinson and Mbaye Diagne put second-from-bottom West Brom 4-1 up.
Mason Mount, on as a substitute, reduced the deficit but there was no way back for the hosts – and Robinson netted again in the final moments.
Few would have predicted an Albion victory, particularly after the opening goal.
Pulisic followed up to score after Marcos Alonso’s 27th-minute free-kick was touched on to the post by keeper Sam Johnstone.
The American showed great reactions and technique, beating Darnell Furlong to the ball and managing to find the net with a first-time effort despite being under pressure from the Albion defender.
However, Chelsea were reduced to 10 men a couple of minutes later.
Silva, who was booked early on, floored Okay Yokuslu with a late challenge near the edge of the penalty area and was given a second yellow card.
West Brom were then dealt a blow when former Chelsea stalwart Branislav Ivanovic, having come on as a substitute for the injured Dara O’Shea 12 minutes earlier, himself suffered an injury and had to go off.
But the relegation-threatened visitors battled on – and stunned Chelsea by scoring twice in quick succession before the interval.
Pereira’s equaliser was the first goal Chelsea have conceded at the Bridge since Tuchel took over as Blues boss.
They were caught out by a long kick forward by Johnstone, with Pereira drifting behind Kurt Zouma before lobbing keeper Edouard Mendy.
Suddenly Chelsea were all over the place and former QPR winger Matt Phillips curled a shot against the bar before Pereira struck again.
The Brazilian evaded three challenges before working the ball on to his left foot and firing low past Mendy.
Chelsea almost equalised early in the second half when Johnstone spilled Reece James’ cross and Alonso’s attempt to force home the loose ball was deflected against the post by Semi Ajayi.
Tuchel’s side looked dangerous despite being a man short – but a fabulous goal by substitute Robinson just after the hour-mark extended Albion’s lead.
Furlong played the ball in from the right and Robinson’s first-time side-foot whizzed into the roof of the net.
And worse followed for Chelsea when Diagne fired into the bottom corner after a lovely Baggies move.
Pereira collected Conor Townsend’s back-heel and laid the ball across to Diagne, who finished emphatically.
Mount pulled one back with a close-range tap-in after being teed up by Timo Werner following Alonso’s low cross.
But Robinson added a fifth for Albion by calmly lifting the ball over Mendy after being set up by the outstanding Pereira.
Chelsea: Mendy, Azpilicueta, Silva, Zouma, James, Jorginho (Havertz 72), Kovacic, Alonso, Pulisic (Mount 45), Werner, Ziyech (Christensen 33).
Subs not used: Arrizabalaga, Rudiger, Giroud, Hudson-Odoi, Chilwell, Gilmour.