Ole Gunnar Solskjaer's Bluebirds nudged up one place in the Premier League table after being held 1-1 by Stoke at the Cardiff City Stadium, with Fulham slipping to 19th spot as a result of their 3-1 defeat at Tottenham who are back in the top six.
Wilfried Bony took his goal tally for the season in all competitions to 22 as Swansea came from behind to win 2-1 away to Newcastle and rise to 13th, the result piling more pressure on Magpies manager Alan Pardew.
However, the day's most surprising scoreline came in Saturday Night Football as bottom side Sunderland ended Chelsea boss Jose Mourinho's long unbeaten league run at Stamford Bridge, coming away with a 2-1 victory.
Villa recorded a goalless stalemate at home to Southampton, while at Upton Park, Palace racked up a club-record fifth straight top-flight victory as Mile Jedinak's penalty proved enough to beat West Ham 1-0.
Both Cardiff and Stoke were unchanged following 1-0 wins last time out, meaning the Potters' January signing Peter Odemwingie lined up against his former club.
After a tepid opening, Odemwingie forced David Marshall into a good save on the half-hour mark - and then won a controversial penalty for the visitors just before the interval. Referee Howard Webb adjudged that Kim Bo-Kyung had pushed the Nigerian to the ground in the box after Ryan Shawcross had kept the ball alive in the box following a corner. Marko Arnautovic stepped up to fire home his third league strike of the season, down the middle of Marshall's goal.
But when Fraizer Campbell attempted to burst past Steven Nzonzi at the other end - only to be brought down by the Stoke midfielder - Webb awarded Cardiff their first penalty of the campaign. Peter Whittingham's effort only narrowly missed the legs of Asmir Begovic, but parity was restored.
Cardiff thought they had gone in front when Juan Cala headed in, after Campbell's shot had hit a post and bounced out from underneath Marshall's body. However, the Bluebirds had failed to spot the assistant referee's flag, correctly raised against the Spaniard who was offside.
Marshall made an excellent save in the closing moments to deny Stoke sub Oussama Assaidi and Jon Walters hit the crossbar as the game ended 1-1. Cardiff go 18th, two points behind 17th-placed Norwich, while Stoke stay 10th.
At St James' Park, Luuk de Jong was back in the Newcastle starting line-up in place of Steven Taylor, and his excellent link-up play enabled Shola Ameobi to open the scoring against Swansea in the 23rd minute. The Dutchman found Ameobi with a one-two pass and with several members of Swansea's defence struggling to intercept the ball, the latter managed to spin and fire home a shot across Michel Vorm for the Magpies' first goal in four games.
Having received a ball to the face, referee Chris Foy was among three substitutions in the first half (Mathieu Debuchy and the fit-again Loic Remy replaced injured duo Papiss Cisse and De Jong respectively). Following those changes, Bony rose impressively in first-half stoppage time to head home an equaliser from Ben Davies' corner.
The Welsh club were in greater need of the points, and when Marvin Emnes won a penalty off a challenge from Cheick Tiote in stoppage time, Bony stepped up to convert the winner.
Swansea stretch their safety cord to six points, while Newcastle - whose fans made their displeasure known at the final whistle - remain firmly slotted into ninth place.
In the first half at Aston Villa, Southampton's Rickie Lambert could easily have bagged an early brace - firstly with a header straight at Brad Guzan, and then with a deflected effort that went wide of the far post. The Villa shot-stopper was then on hand to make a flying save to deny Steven Davis from close range. Saints enjoyed 71% possession before the break, with Villa - losers on their previous four outings - failing to fashion a chance on goal.
When Karim El Ahmadi and Marc Albrighton were presented with openings in the second period, Artur Boruc was able to save comfortably on both occasions. At the other end, Adam Lallana fluffed one chance before managing to get the ball in the back of the net, only to have the effort chalked off for offside.
Villa drop to 15th but are now five points above the drop zone with a game in hand, while Saints remain eighth.
A minute's applause was held before kick-off at Upton Park before West Ham faced Crystal Palace in memory of young striker Dylan Tombides, who lost his battle with cancer earlier this week.
Andy Carroll had the best chance of the first half, forcing Julian Speroni into an athletic save, and the big England striker proceeded to squander several more opportunities before referee Martin Atkinson decided Pablo Armero had fouled Cameron Jerome in the area just before the hour mark. Mile Jedinak performed the honours from the penalty spot.
The result keeps Palace and the Hammers in 11th and 12 spots respectively, separated now by six points.
Earlier on Saturday, Fulham's hopes of survival suffered a blow with a 3-1 defeat at Tottenham, who returned to sixth spot.
Christian Eriksen set up two of Spurs' goals as the hosts put six points between themselves and Manchester United, who have two games in hand in the race to secure a Europa League third qualifying round berth.
The Cottagers came into the game looking to secure a third straight win, but Felix Magath still chose to make five changes to his starting line-up. Zeki Fryers was the only switch in the Spurs team, and the young defender's error allowed Steve Sidwell to equalise in the first half, less than two minutes after Paulinho had opened the scoring by tapping in Eriksen's free-kick.
Shortly after the break, Harry Kane headed in an Aaron Lennon cross for his third goal in three games, and within a quarter of an hour, another Eriksen set-piece was converted by Younes Kaboul to provide Spurs with a two-goal cushion. Fulham did get an opportunity to reduce the arrears when Eriksen handled the ball in the area, but Hugo Lloris saved Steve Sidwell's spot-kick and the result keeps Magath's men two points from safety with three games left.
Finally, rock-bottom Sunderland dealt a stunning blow to Chelsea's title hopes as they shattered Mourinho's unbeaten home league record with a 2-1 win at Stamford Bridge.
Fabio Borini's 82nd-minute penalty boosted the Black Cats' slim survival prospects and ended Mourinho's extraordinary run of 77 home league games unbeaten in his two spells in charge.
More importantly, the result left Chelsea trailing leaders Liverpool by a point - which Brendan Rodgers' men could increase to four with victory over Norwich at Carrow Road on Easter Sunday.
Sunderland's sensational win looked unlikely when Samuel Eto'o put Chelsea in front by converting a 12th-minute corner from Willian.
But the Black Cats were level within six minutes when man-of-the-moment Connor Wickham tapped home after Chelsea keeper Mark Schwarzer parried a drive from Marcos Alonso.
And Sunderland's fairytale was complete eight minutes from time when Cesar Azlpilicueta was ruled to have fouled Jozy Altidore in the box, and Borini stepped up to send Schwarzer the wrong way.