West Ham came from behind to earn all three points against ten-man Swansea at the Boleyn Ground.
The visitors went ahead when Wilfried Bony struck his seventh goal of the season but the home side levelled matters before the break thanks to Andy Carroll's fine header.
Carroll grabbed his second midway through the second half before the Swans were reduced to ten men as Lukasz Fabianski fouled Diafra Sakho just outside the box.
Despite a late rally from the visitors it was the Hammers who netted a third late on as substitute Diafra Sakho raced clear before firing past Gerhard Tremmel.
Garry Monk made just one change to the side that beat Queens Park Rangers in midweek as Angel Rangel returned to the starting-line up in place of the suspended Neil Taylor.
West Ham, meanwhile, made two changes to the team that secured victory over West Brom, as Morgan Amalfitano and Mauro Zarate made way for Enner Valencia and Alex Song.
WEST HAM: Adrian, Carl Jenkinson (Joey O'Brien, 79), Winston Reid, James Tomkins, Aaron Cresswell, Alex Song, Cheikhou Kouyate (James Collins, 86), Kevin Nolan (capt), Stewart Downing, Enner Valencia (Diafra Sakho, 46), Andy Carroll.
SUBS NOT USED: Jussi Jaaskelainen, James Collins, Morgan Amalfitano, Carlton Cole, Mauro Zarate.
SWANS: Lukasz Fabianski, Angel Rangel (Nathan Dyer, 87), Kyle Bartley, Ashley Williams (capt), Jazz Richards, Leon Britton (Gerhard Tremmel, 69), Ki Sung-Yueng, Wayne Routledge, Jefferson Montero (Bafetimbi Gomis, 75), Gylfi Sigurdsson, Wilfried Bony.
SUBS NOT USED: Jordi Amat, Dwight Tiendalli, Jonjo Shelvey, Tom Carroll.
West Ham - who had lost just once in eight league games coming into this fixture - started the better of the two sides as they pinned the visitors back in the early stages, with frontman Andy Carroll and the Hammers midfield giving the Swans no time to settle.
But it was Kevin Nolan who had the first sight of goal on 16 minutes as he diverted Carl Jenkinson's right-wing cross a couple of yards wide of the near post.
And the former Bolton man was involved again just moments later as Stewart Downing's clever free kick found the midfielder inside the box but his effort was foiled well by Lukasz Fabianski.
But it was the visitors who broke the deadlock with 20 minutes on the clock following a fine move.
Gylfi Sigurdsson started it on the left and after he played in Jefferson Montero inside the box, the Ecuadorian cut the ball back for the unmarked Wilfried Bony who side-footed past Adrian for his seventh goal of the season.
Bony nearly helped himself to a second shortly past the half hour mark as the Swans robbed possession in midfield, but the striker's powerful strike was a fraction wide of the left-hand post.
West Ham responded well as Downing picked out Aaron Cresswell at the far post, but his header was straight at Fabianski.
However, the hosts did draw level before the break as Jenkinson's superb cross from the right was met by Carroll who planted a firm header into the far corner.
Half-time: West Ham 1 Swans 1
The home side made a change at the interval as Enner Valencia was replaced by Diafra Sakho, while Wayne Routledge was the first player to be booked as he tripped Winston Reid midway inside the Swans half.
The Swans were being pegged back in the opening stages of the second period, but it was Garry Monk's side who had a great chance to take the lead on the hour mark as Montero broke forward and found Bony, but the Ivorian saw his rasping drive hit the top of the crossbar.
But it was West Ham who took the lead midway through the second half as Downing's corner from the left was met by an unmarked Carroll and he steered another header into the net.
And it got worse for the visitors just two minutes later as Carroll played a ball over the top of the Swans defence for Diafra Sakho and he appeared to be fouled by the onrushing Fabianski and referee Chris Foy produced a straight red card for the former Arsenal man.
That meant a tactical change as Leon Britton was replaced by Gerhard Tremmel with 20 minutes left to play at Upton Park, while Bafetimbi Gomis was also introduced for Jefferson Montero.
The hosts should have put the game beyond doubt with 13 minutes to go as a mistake from Ashley Williams allowed Sakho a run at goal but the striker saw his effort strike the base of the far post.
Swansea then rallied and forced a series of corners as both Sigurdsson and Ki saw shots deflected wide of goal, but it was West Ham who scored another late on to secure all three points.
Andy Carroll flicked the ball on for Diafra Sakho and the substitute took it down on his chest before hitting an unstoppable half volley past Tremmel and into the roof of the net.
Sakho was even denied a second moments later as a corner wasn't cleared and his effort was blocked by Tremmel inside the six-yard box.