Dwight Gayle opened the scoring in the 22nd minute, but Palace were left clinging onto their lead in the second half as West Brom put visiting goalkeeper Julian Speroni to the test.
However, Marouane Chamakh scored a second for Palace in stoppage time to secure his side's progression.
Keith Downing made eight changes to the West Brom side that beat Newcastle United 1-0 in the Premier League on New Year’s Day, with Ben Foster, Claudio Yacob and captain for the day Gareth McAuley the only players to retain starting berths.
Tony Pulis, meanwhile, made five alterations to the XI that drew 1-1 with Norwich City on Wednesday, handing starts to Jonathan Parr, Barry Bannan, Hiram Boateng, Gayle and Jonathan Williams. Top goalscorer Chamakh dropped to the bench.
The hosts - five-time winners of the competition - had the game’s first shot at goal, with Saido Berahino sending a speculative volley over the crossbar.
A flowing Palace move led to Bannan striking the post from a tight angle moments later – the Scot very nearly benefiting from a well-worked exchange of passes with Gayle.
Matej Vydra was the first man to work either goalkeeper as the clock ticked past the quarter of an hour mark, forcing Speroni to palm the ball away from close range after a defence-splitting throughball from Zoltan Gera.
Yet it was Palace who broke the deadlock midway through the half, when Gayle turned and fired a left-footed effort into the bottom right-hand corner of the West Brom net from 20 yards.
The hosts almost hit back within a minute of the subsequent restart, but Craig Dawson’s header from a left-wing cross rattled the crossbar.
West Brom came out fighting at the start of the second period, with Berahino's 25-yarder drawing a decent stop from Speroni.
The attacker then caused the goalkeeper yet more problems, Speroni almost spilling the ball into the path of an advancing Shane Long after failing to hold a Berahino strike.
West Brom, who looked the better team after the break, continued to press for an equaliser as the half progressed, and Vydra had Speroni at full stretch soon after the hour mark with a volley from just outside the penalty area.
Berahino’s personal battle with Speroni continued, but it was the Palace man who came out on top once again when the former unleashed an effort from the edge of the box in the 70th minute.
West Brom had appeals for a penalty turned down following a Parr challenge on Long five minutes later, before Gayle had a goal ruled out for offside at the other end.
Palace wrapped up victory in stoppage time. After Gera saw a shot deflected wide for the hosts, Chamakh fired into the bottom right-hand corner from the centre of the penalty area.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.