Leighton Baines scored two first-half goals as Everton boosted their top-four hopes with a narrow win over West Brom.
Baines opened the scoring with a fine strike from the edge of the box before converting a penalty after Claudio Yacob's foul on Victor Anichebe.
The deficit was halved when Shane Long headed in after John Heitinga's poor clearance from Romelu Lukaku's shot.
Graham Dorrans and Steven Pienaar both hit the woodwork in a tense finale as chances went amiss at both ends.
The result moved Everton within a point of fourth-placed Tottenham, while West Brom's worrying dip in form continued and they have now claimed just one point from their last five Premier League matches.
Steve BowerBBC Match of the Day commentator
"This should have been more comfortable for Everton, put in command by a brace from the brilliant Leighton Baines. West Brom at least showed a bit more fight in the second half, yet despite Shane Long halving the deficit, you never really felt they were going to come back into this."
Everton came inches away from an opener in the 19th minute when an Anichebe knockdown found Marouane Fellaini, whose effort from the right side of the penalty box cannoned off the outside of the right upright.
However, Moyes's side had just another 10 minutes to wait for their opener as Baines finished the move he started, eventually racing onto Leon Osman's measured pass down the left channel before unleashing an unstoppable swerving strike inside the top-left corner.
The Baggies suffered a further setback when George Thorne collapsed to the ground holding his knee after jostling for possession with Osman and the midfielder was carried from the field on a stretcher.
Moyes hails special Baines
Yacob was introduced in Thorne's place but the Argentinian's first meaningful contribution was to give away a penalty for a barge on Anichebe.
Baines stepped up and sent Ben Foster the wrong way with a low shot into the bottom-right hand corner for his sixth goal of the season.
West Brom improved after the interval and Lukaku served an early warning when he fired over from Thomas's pass within seconds of the restart.
But Steve Clarke's team were celebrating midway through the second half when Lukaku rounded Tim Howard and fired goalwards. Heitinga's attempts to control the ball on the line ended disastrously as the ball spun up invitingly for substitute Long, who headed in from close range.
The Baggies almost drew level in the 67th minute when Dorrans curled a stunning free-kick against the right-angle of the crossbar after Phil Neville had fouled Yacob.
Yet they had a fortunate escape of their own late on when Osman somehow blazed over the crossbar from point-blank range with the goal gaping after Pienaar's shot against the left post had fallen into his path.
Clarke wants to stop leaking goals
Everton manager David Moyes:
"I thought it should have been more straightforward. We gave away a really shabby goal. We had a great chance to make it three (via Osman).
"Leighton is a special player and he continues to add something to our team. I see him getting better in lots of ways, his football intelligence and how he can improve his and the team's performances."
West Brom head coach Steve Clarke:
"It's disappointing. It's not been a good start to the year for us. We gave ourselves too much to do and we have been doing that too much recently.
"Of course it's a worry if you give two goals away, it's very unusual you come back.
"Maybe with a bit more composure we could have got something out of it. Graham Dorrans was unlucky with the free-kick against the crossbar. We need to dig in. The harder you work, the luckier you get."
Full Time The final whistle is blown by the referee.
Free kick awarded for an unfair challenge on Claudio Yacob by Marouane Fellaini. Direct free kick taken by Ben Foster.
The referee blows for offside against Marouane Fellaini. Ben Foster takes the free kick.
Marouane Fellaini fouled by Goran Popov, the ref awards a free kick. Phil Jagielka takes the free kick.
Corner taken left-footed by Chris Brunt, Phil Jagielka fouled by Jonas Olsson, the ref awards a free kick. Tim Howard takes the direct free kick.
Markus Rosenberg challenges Johnny Heitinga unfairly and gives away a free kick. Free kick taken by Tim Howard.
Substitution (Everton) makes a substitution, with Nikica Jelavic coming on for Victor Anichebe.
Steven Pienaar takes a shot. Blocked by Gareth McAuley.
Effort from just inside the area by Steven Pienaar hits the post. Shot from close range by Leon Osman clears the bar.
Free kick taken by Steven Pienaar. A cross is delivered by Steven Pienaar. Leon Osman takes the outswinging corner, clearance by Romelu Lukaku.
Booking Graham Dorrans is given a yellow card.
Graham Dorrans gives away a free kick for an unfair challenge on Leighton Baines.
Foul by Chris Brunt on Darron Gibson, free kick awarded. Free kick taken by Sylvain Distin.
Free kick taken by Tim Howard.
Substitution Markus Rosenberg replaces Jerome Thomas.
The referee blows for offside.
Shot from just outside the box by Marouane Fellaini misses to the right of the goal.
Phil Jagielka has an effort at goal from outside the area missing to the wide right of the target.
Leighton Baines crosses the ball, clearance by Jonas Olsson.
Effort on goal by Leon Osman from just outside the area goes harmlessly over the target.
Foul by Phil Neville on Claudio Yacob, free kick awarded. Strike comes in from Graham Dorrans from the free kick, free kick awarded for a foul by Jonas Olsson on Johnny Heitinga. Free kick taken by Tim Howard.
Substitution Kevin Mirallas leaves the field to be replaced by Darron Gibson.
The assist for the goal came from Romelu Lukaku.
64:02 Goal scored
Goal - Shane Long - Everton 2 - 1 West Brom Shane Long scores a headed goal from close range. Everton 2-1 West Brom.
Romelu Lukaku takes a shot. Johnny Heitinga gets a block in.
Romelu Lukaku takes a shot. Johnny Heitinga gets a block in.
Substitution Shane Long is brought on as a substitute for James Morrison.
Johnny Heitinga restarts play with the free kick.
Booking Claudio Yacob booked for unsporting behaviour.
Free kick awarded for an unfair challenge on Steven Pienaar by Claudio Yacob.
Free kick awarded for an unfair challenge on Marouane Fellaini by Chris Brunt. Johnny Heitinga takes the direct free kick.
Steven Pienaar takes a shot. Comfortable save by Ben Foster.
Kevin Mirallas takes a shot. Save by Ben Foster. Corner taken short by Kevin Mirallas.
Corner taken by Chris Brunt, clearance by Phil Jagielka.
Free kick awarded for a foul by Billy Jones on Kevin Mirallas. Leighton Baines takes the free kick.
Leighton Baines is caught offside. Direct free kick taken by Ben Foster.
Jerome Thomas fouled by Marouane Fellaini, the ref awards a free kick. Direct free kick taken by Claudio Yacob.
Romelu Lukaku produces a left-footed shot from just outside the penalty box that misses to the left of the goal.
The second half kicks off.
Romelu Lukaku takes a shot. Save made by Tim Howard. Kevin Mirallas has an effort at goal from outside the penalty box which goes wide left of the goal.
45:00 +3:02 Half time
Half Time The whistle is blown to end the first half.
Victor Anichebe provided the assist for the goal.
45:00 +1:13 Goal scored
Goal - Leighton Baines - Everton 2 - 0 West Brom Power penalty scored by Leighton Baines. Everton 2-0 West Brom.
Victor Anichebe fouled by Claudio Yacob, the ref awards a Penalty.
Gareth McAuley fouled by Victor Anichebe, the ref awards a free kick. Direct free kick taken by Billy Jones.
Direct free kick taken by Ben Foster.
Substitution Claudio Yacob replaces George Thorne.
George Thorne fouled by Leon Osman, the ref awards a free kick.
Free kick awarded for an unfair challenge on Steven Pienaar by Billy Jones. Free kick taken by Leon Osman.
The referee blows for offside against Romelu Lukaku. Indirect free kick taken by Johnny Heitinga.
Corner taken by Kevin Mirallas played to the near post.
Jerome Thomas is ruled offside. Johnny Heitinga takes the direct free kick.
Romelu Lukaku is ruled offside. Indirect free kick taken by Tim Howard.
Free kick awarded for an unfair challenge on Chris Brunt by Victor Anichebe. Chris Brunt restarts play with the free kick.
Unfair challenge on Jerome Thomas by Phil Jagielka results in a free kick. Goran Popov takes the direct free kick.
Leon Osman provided the assist for the goal.
28:07 Goal scored
Goal - Leighton Baines - Everton 1 - 0 West Brom Leighton Baines grabs a goal from the edge of the penalty box to the top left corner of the goal. Everton 1-0 West Brom.
Free kick awarded for a foul by Phil Neville on James Morrison. James Morrison restarts play with the free kick.
Romelu Lukaku is flagged offside by the assistant referee. Johnny Heitinga takes the direct free kick.
Marouane Fellaini produces a right-footed shot from just inside the box and strikes the post.
Kevin Mirallas takes a short corner.
The referee blows for offside against Romelu Lukaku. Johnny Heitinga restarts play with the free kick.
Victor Anichebe fouled by Chris Brunt, the ref awards a free kick. Free kick taken by Phil Jagielka.
Free kick awarded for an unfair challenge on Jonas Olsson by Kevin Mirallas. Ben Foster takes the free kick.
Foul by Claudio Yacob on Victor Anichebe, Penalty awarded.
Romelu Lukaku takes a shot. Save made by Tim Howard. Effort from outside the penalty area by Kevin Mirallas goes wide left of the target.
Graham Dorrans takes a shot. Blocked by Sylvain Distin.
Graham Dorrans challenges Leighton Baines unfairly and gives away a free kick. Sylvain Distin restarts play with the free kick.
Free kick awarded for a foul by Billy Jones on Steven Pienaar. Direct free kick taken by Sylvain Distin.
Steven Pienaar decides to take a short corner.
The game kicks-off.
Live text and data provided by The Press Association
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.