Mile Jedinak's second-half penalty was enough for Crystal Palace to see off West Ham United 1-0 in the Barclays Premier League and equal a club record.
Palace completed a double over their fellow Londoners, having triumphed by the same scoreline at Selhurst Park earlier in the season, with a fifth consecutive top-flight win – a run on a par with their previous best mark, set in December 1992.
Jedinak, an ever-present in the league this season, netted his maiden Barclays Premier League goal with aplomb after Pablo Armero had fouled Cameron Jerome.
Until that point, West Ham had crafted the clearer openings but Andy Carroll passed up chances to press his claims for a place in England's FIFA World Cup squad.
Crystal Palace are now mathematically safe from relegation with three matches remaining, while West Ham lie seven points clear of the bottom three.
Before kick-off, Upton Park paid poignant tribute to young West Ham forward Dylan Tombides – the 20-year-old academy striker who passed away on Friday following a three-year battle with testicular cancer. Tombides wore squad number 38 and fans later stood to applaud throughout the 38th minute of the match.
West Ham captain Kevin Nolan, back from the hamstring strain that kept him out of the midweek defeat at Arsenal, hooked an eighth-minute cross to the back post where Carroll headed over under pressure from Adrian Mariappa. Carroll was soon involved at the other end, clearing off the line to deny Kagisho Dikgacoi a first Barclays Premier League goal from Yannick Bolasie's corner.
Mariappa, who played in a protective mask having sustained a broken nose in Palace's 3-2 win at Everton last time out, drilled goalwards from a cleverly worked 19th-minute set-piece. Palace thought his shot struck Nolan on the arm, but no penalty was given and referee Martin Atkinson was similarly unmoved after 32 minutes when Jedinak bundled Carroll to the floor.
In between those two incidents, Julian Speroni tipped over a rasping drive from Mohamed Diame and the Crystal Palace goalkeeper superbly denied Diame and Carroll from close range in quick succession as West Ham ended the half on the front foot.
Carroll pulled a 50th-minute shot wide of the near post having collected Stewart Downing’s left-wing cross and the striker was then denied by Damien Delaney’s last-ditch block.
Yet it was Palace who broke the deadlock from the spot in the 59th minute. Having survived a penalty claim from Bolasie earlier in the half, Armero was not afforded another reprieve as he sent Jerome to ground and Jedinak dispatched the resulting penalty emphatically.
The visitors then swarmed forward with intent and wingers Bolasie and Jason Puncheon both had chances to extend Palace's advantage.
A second away goal proved elusive, but West Ham could not find a reply as substitute Joe Cole twice blasted off target inside the final 10 minutes.
West Ham manager Sam Allardyce: "It was stupid penalty conceded by Pablo Armero for the winning goal. Setting out your plans is all very well, but you cannot make allowances for that.
"He didn't need to make that challenge and Crystal Palace are set out to take advantage when you make a mistake like that. We put every effort in but could not put the ball into the back of the net.
"We had to take chances when they came our way and in that department we failed miserably today."
Crystal Palace manager Tony Pulis: "We're delighted. It was a tough game, we knew it was going to be. West Ham are a good side and they have got some good players, but the most pleasing thing about it was the effort.
"When you think that we played at Goodison on Wednesday night, most of the lads didn't get home until 2.30 in the morning, in terms of a quick turnaround and playing an away game, I thought it was a great effort from them."