Paul Scharner and Chris Brunt put the Baggies into a 2-0 lead at Goodison Park on Saturday before Everton's top goalscorer Tim Cahill pulled one back.
Everton's hopes of a fightback were dashed as Mikel Arteta was sent off for stamping and Somen Tchoyi and Youssouf Mulumbu, with aid of a Sylvain Distin deflection, finished them off.
Remarkably Mulumbu was then sent off himself for two bookings, the first for celebrating in the crowd and then for a bad tackle on Steven Pienaar.
It was the only blot on an otherwise excellent day for the visitors, who had been looking for a lift after collecting just one point in their previous five games.
Everton are now without a win in five and their frustration was summed up by Arteta, who could have no excuse for his dismissal for stamping on Gonzalo Jara.
Arteta had taken over the captaincy in the unanticipated absence of Phil Neville but the Spaniard let his side down as they looked to force their way back into the game.
Those incidents overshadowed some excellent play by West Brom, and in particular stunning goals from Brunt and Tchoyi.
Everton had made three changes for the match with Tony Hibbert replacing Neville at right-back and Victor Anichebe, out since pre-season with a knee injury, taking over from Seamus Coleman on the right wing.
Ayegbeni Yakubu also returned to the starting line-up in place of Louis Saha as David Moyes continued his search for a potent attacking combination.
The Merseysiders started well as Leighton Baines whipped in an early but Distin was unable to get a touch in front of goal.
Anichebe, showing no ill effects from the knee problems that have hampered him for two seasons, then cut inside and curled a fine effort towards goal but Scott Carson tipped away.
West Brom responded by grabbing the lead against the run of play after 15 minutes.
Scharner lost his marker as Brunt delivered a corner and met the ball with a firm header which Tim Howard could not keep out.
Everton had two chances to claim an immediate equaliser from free-kicks but failed to take either. First Baines curled over and then Carson palmed away Arteta's more dangerous effort.
Brunt, returning from a thigh injury, then showed the hosts how it could be done by curling in a brilliant free-kick from 25 yards for West Brom's second after 26 minutes.
After being linked with Liverpool earlier this month, the goal further enhanced the Northern Ireland international's growing reputation.
Everton struggled to respond and it was not until three minutes before the interval they finally snapped out of their lethargy and, once again, they had Cahill to thank.
Cahill rose the highest as Baines swung in a deep corner and the Australian headed back across goal for his eighth of the season.
Suddenly invigorated, Everton came forward again and almost grabbed an equaliser on the stroke of half-time as another Baines corner curled out just beyond the far post.
They did not start the second half quite as brightly and manager Moyes waited just 10 minutes before changing the attack, sending on Saha and Jermaine Beckford for Yakubu and John Heitinga.
Beckford was slipped in on goal within moments of coming on and clipped the ball over the advancing Carson but Gabriel Tamas got back to clear off the line.
That was the start of a frantic few moments as Everton then appealed for a penalty after a collision between Jara and Baines on the edge of the box.
Play went on and Jara flew in recklessly on Arteta on the Everton left.
The Spaniard took exception to the challenge and appeared to stamp twice on the Chile World Cup player. Referee Lee Mason showed a straight red card.
Beckford - guilty of a glaring miss against Sunderland on Monday - then spurned a great chance to equalise as he stabbed a Hibbert cross over from six yards.
Everton were made to pay as Steven Reid picked out substitute Tchoyi with a superb cross-field ball.
The Cameroon international still had plenty of work to do but did it superbly as he cut in from the left, checked back and curled a fine shot beyond Howard.
West Brom then inflicted more damage as Mulumbu played a one-two with James Morrison and clipped in a fourth, via Distin, four minutes from time.
The strike was officially given as an own goal but Mulumbu ran off to celebrate anyway and was booked for running into the crowd.
That proved a big mistake on his part as the referee then sent him off after a poor tackle on Pienaar just moments later.