Leaders Manchester City were beaten for the first time this season as West Ham collected another major Premier League scalp with a stunning 2-1 win at the Etihad Stadium.
Slaven Bilic's team returned with three-point hauls from their opening two away matches at Arsenal and Liverpool and they continued a remarkable run on their travels by halting City's 100 per cent record.
Victor Moses netted a sublime early opener and Diafra Sakho doubled the lead – as he did when West Ham beat the same opponents at Upton Park last season.
Record signing Kevin De Bruyne marked his first start for City with a fine finish on the stroke of half-time but there was no further way through for Manuel Pellegrini's men as away goalkeeper Adrian and some desperate defending repelled persistent second-half pressure.
The victory moves West Ham up to second place, three points behind their beaten opponents at the summit.
Nicolas Otamendi made his full City debut alongside De Bruyne, while an injury to David Silva in the warm-up meant Jesus Navas was restored to the starting XI.
Adrian returned from suspension in goal as one of three changes for West Ham, with Pedro Obiang and Carl Jenkinson replacing Cheikhou Kouyate and Angelo Ogbonna.
The visiting keeper was forced into early action as Fernandinho met De Bruyne's right-wing corner with a powerful header but West Ham stunned the Etihad Stadium by taking a sixth-minute lead.
Dimitri Payet fed Moses who advanced before unleashing a brilliant low drive into Joe Hart's bottom-left corner from 25 yards.
That was the first Premier League goal City had conceded for 572 minutes and they were almost gifted an instant response – Aaron Cresswell's header catching out Adrian, who had strayed from his area, but Sergio Aguero was unable to finish.
West Ham were not content to sit on their lead and it was 2-0 in the 31st minute, the hosts defending sluggishly as Obiang met a corner and Sakho scrambled home.
City might have entered the dressing room in further disarray but for a last-ditch challenge from Eliaquim Mangala which denied Sakho and they reduced the arrears in first-half stoppage time.
Aguero, who endured a frustrating 45 minutes in front of goal, set up De Bruyne to send a crisp, low strike beyond Adrian from the edge of the box.
Pellegrini made a defensive switch at the interval, with Martin Demichelis replacing Mangala, and Yaya Toure fired an early second-half warning in West Ham’s direction by fizzing an angled shot wide.
Adrian reacted superbly as Winston Reid almost turned a Navas cross into his own net before Toure had a venomous strike blocked and a bustling run into the box curtailed by the goalkeeper.
On an increasingly rare West Ham foray forward, Sakho rounded Hart but could not finish, while Toure continued his one-man quest for an equaliser by blasting across the face of goal in the 65th minute.
A close-range stop from Navas added to Adrian’s impressive body of work before Reid turned another Toure shot behind.
The Spanish goalkeeper saved his best moment until five minutes from time – an exquisite reaction stop keeping out an Otamendi header from De Bruyne’s corner – and he deservedly led the celebrations at the whistle as City’s club record run of 11 consecutive league wins came to an end.