Fletcher gave Sunderland a first-half lead but Palace equalised thanks to a freakish Wes Brown own goal, only for Gomez to put the visitors back in front with 11 minutes left.
Palace then lost captain Mile Jedinak when he received his second yellow card of the night and their misery was complete when Fletcher notched Sunderland’s third in stoppage-time.
The hosts began the match well and could easily have had a penalty inside the opening 30 seconds when Fraizer Campbell burst into the box and appeared to be tripped by Santiago Vergini but referee Phil Dowd did not spot the infringement.
Gomez smashed a free-kick from a dangerous area straight into the wall at the other end but Palace were soon back on the front foot and Wilfried Zaha sent over a dangerous cross which neither Campbell nor Marouane Chamakh could quite get on the end of.
However, it was Sunderland who took the lead when they worked the ball neatly down the left, before Patrick van Aanholt floated over a cross which Fletcher (31) skilfully nodded into the corner from just to the right of the penalty spot.
Palace tried to respond and had another penalty shout when the lively Zaha went down as Van Aanholt challenged but Dowd was unmoved again.
Van Aanholt unfortunately picked up a shoulder injury as the duo went to ground and had to be stretchered off, to be replaced by Brown who had been dropped to the bench after an error against Arsenal last week.
Sunderland were buoyed by their goal in general and Fletcher tested keeper Julian Speroni with a thumping shot from a tricky angle before the Palace keeper made a more comfortable save from a weak Connor Wickham header.
The visitors were knocking it around nicely and they strung together a long passing sequence just before the break which ended with Vergini drawing a decent save from Speroni after being picked out by Will Buckley.
Palace flew out of the traps again after the interval and Zaha had a seemingly goal-bound shot blocked by Brown, and then tested Costel Pantilimon, a replacement in goal for Vito Mannone for Sunderland.
Pantilimon then produced a superb save to claw away a Chamakh header from a Zaha cross but Campbell cleverly back-heeled the ball back into the danger area and it somehow bounced in off the unfortunate Brown (55) at the near post to give Palace a bizarre equaliser.
Undaunted, Sunderland tried to re-take the lead and Speroni did well to beat away another Vergini piledriver after a good knock-down from Brown, before Pantilimon stretched to push a dangerous Zaha cross to safety at the other end.
The Sunderland keeper then picked up a yellow card for dawdling over a free-kick, although it quickly became clear that Gus Poyet’s team were not going to sit back and play for a point.
Buckley made progress down the right, cut inside and then slid a nice pass to Gomez (79), who found the corner of the net with a delightful first-time finish from the edge of the box which left Speroni with no chance.
There was still plenty of time left but Palace then lost Jedinak, shown a second yellow for kicking out at Gomez after the pair had gone to ground.
Sunderland had been beaten 8-0 at Southampton on their last Premier League away trip but it was a different story here and they made sure of the points when Liam Bridcutt robbed fellow sub Jason Puncheon and played in Fletcher (90), who calmly flicked the ball past Speroni with the outside of his foot to seal the victory.
Palace travel to face Manchester United in their next Premier League assignment on Saturday, while Sunderland play host to Everton on Sunday afternoon.