Romelu Lukaku continued his good form as West Brom beat Swansea to move up to seventh in the Premier League.
Luke Moore gave visitors Swansea an early lead with a well-taken header before Lukaku scored at the near post.
The Belgian then missed a penalty, yet the Baggies moved in front when Jonathan de Guzman scored an own goal.
Swansea responded and thought they had earned a point but substitute Roland Lamah had a goal controversially ruled out for offside late on.
Lamah surged into the West Brom box and had the ball in the net after his cross cannoned back to him.
But referee Lee Mason decided that it came back off a Swansea team-mate as he tucked in, meaning he was offside as he scored, even though replays showed that the ball hit West Brom's Gareth McAuley and Ben Foster before returning to the Belgian.
It was a stroke of fortune for Steve Clarke's team, who weathered a late storm from the Swans, but the Baggies were rewarded for an improved display after the break as they overtook their opponents in the table.
The result ends West Brom's run of three straight defeats against Swansea and puts them within four points of fifth-placed Arsenal, who have a game in hand.
- Swansea had only dropped two points from winning positions before this game, now up to five
- Romelu Lukaku has seven goals in his last eight Premier League appearances
And after another strong performance by Lukaku, they can certainly put pressure on teams around them such as Everton, Liverpool and Swansea.
Michael Laudrup's side have already qualified for the Europa League next season, by virtue of their Capital One Cup success.
Yet after a week where the Dane signed a new contract keeping him at the club until 2015, the finale to this encounter left him with a sour taste in his mouth.
Before Moore's smartly-taken header, his team should already have led but Michu, so often their saviour this season, wasted two decent openings during a period in which the Swans were in total control.
It took 10 minutes for the hosts to gain any sort of coherent possession, and it wasn't until the half-hour mark when they managed their first chance, Chris Brunt firing over from the angle.
Moments later, though, Swansea went ahead. Ben Davies' cross was deflected for a corner, and Moore held off Claudio Yacob to guide his header in from De Guzman's corner for his second goal in two games.
With little to cheer in the first period, the home supporters were becoming understandably anxious as West Brom's midfield failed to support Lukaku.
And when the equaliser came it was out of the blue as Brunt flicked on Ben Foster's clearance, Graham Dorrans crossed first time, and the striker, on loan from Chelsea, finished at the near post for his 13th goal of the season.
The hosts improved after the break and should have gone ahead when referee Lee Mason pointed to the spot after Wayne Routledge's trip on James Morrison.
Unfortunately for Clarke's team, Lukaku's spot-kick was poor, Michel Vorm diving easily to his right to make the save.
Although Michu has been the headline-grabber for Swansea this season, midfielder De Guzman - on loan from Villarreal - has been one of the key supporting acts, yet his part in the game's third goal was one he will wish to forget.
McAuley headed towards goal from a corner, but although Angel Rangel headed off the line, it cannoned into the goal off the Dutchman.
Sensing defeat, Laudrup made a host of substitutions, but Michu again fired off-target following Nathan Dyer's lay-off.
Lamah then looked like he had earned a point as the Swansea fans celebrated but he was denied by the assistant referee's flag three minutes from the end.
Swansea boss Michael Laudrup: "Football is about emotions and all that. You are up and down in 90 minutes and you talk about decisions made by the referee, but it's a part of the game.
"What makes me frustrated is when you see our disallowed goal. We are not talking about a decision, we are talking about the rules of football.
"When the ball comes back not off one player, but two, it cannot be offside. It's like giving offside from a throw-in. It's frustrating."
West Brom boss Steve Clarke on Swansea's disallowed goal: "I've got to agree with Michael Laudrup. If you look at it, it last came off Ben Foster, which means the fellow is not offside.
"We were fortunate on that one, but the effort we put in, sometimes you get your luck and we earned it.
"[The defeat in November] was something in our minds. We went down there on the back of a good run and they turned us over, so for us to play like we did today, we showed that on our day we can match anybody in the Premier League."
West Bromwich Albion
- 01 Foster
- 03 Olsson
- 06 Ridgewell
- 23 McAuley
- 28 Jones Booked
- 05 Yacob
- 07 Morrison (Thomas - 87' )
- 11 Brunt
- 17 Dorrans (Fortune - 87' )
- 21 Mulumbu
- 20 Lukaku (Odemwingie - 80' )
- 13 Myhill
- 04 Popov
- 30 Tamas
- 14 Thomas
- 08 Rosenberg
- 24 Odemwingie
- 32 Fortune
- 01 Vorm
- 06 Williams
- 16 Monk
- 22 Rangel
- 33 Davies
- 09 Michu
- 11 Pablo (Lamah - 68' )
- 15 Routledge (Shechter - 76' )
- 20 De Guzman
- 24 Ki Sung-Yeung
- 19 Moore (Dyer - 60' Booked )
- 25 Tremmel
- 02 Bartley
- 21 Tiendalli
- 12 Dyer
- 27 Gower
- 14 Lamah
- 17 Shechter
Live Text Commentary
Full Time The referee blows for the end of the match.90:00 +2:27
Marc-Antoine Fortune crosses the ball, Garry Monk makes a clearance.90:00 +1:02
Peter Odemwingie challenges Ben Davies unfairly and gives away a free kick. Ashley Williams restarts play with the free kick.88:29
The referee gives a free kick against Youssouf Mulumbu for handball. Indirect free kick taken by Angel Rangel.87:53
Direct free kick taken by Jonas Olsson.87:53 Booking
Booking Nathan Dyer is booked.87:50
Nathan Dyer concedes a free kick for a foul on Liam Ridgewell.86:19
Ben Foster takes the free kick.86:19 Substitution
Substitution Marc-Antoine Fortune joins the action as a substitute, replacing Graham Dorrans.86:19 Substitution
Substitution Jerome Thomas comes on in place of James Morrison.86:19
The assistant referee flags for offside against Roland Lamah.85:27
Effort from the edge of the penalty box by Peter Odemwingie goes wide of the right-hand upright.84:35
Roland Lamah takes a shot. Blocked by Gareth McAuley.83:17
Sung-Yeung Ki takes a shot. Ben Foster makes a save.82:58
A cross is delivered by Itay Shechter. Ben Davies sends in a cross.79:57 Substitution
Substitution Peter Odemwingie is brought on as a substitute for Romelu Lukaku.79:31
The ball is crossed by Ben Davies. Shot on goal by Miguel Michu from inside the box goes harmlessly over the target.77:45
The ball is crossed by Nathan Dyer, Claudio Yacob manages to make a clearance. Outswinging corner taken right-footed by Jonathan de Guzman from the right by-line.76:17
Romelu Lukaku produces a left-footed shot from the edge of the box and misses to the left of the target.75:44
Chris Brunt takes a inswinging corner from the right by-line played to the near post, Sung-Yeung Ki makes a clearance.
Substitution Itay Shechter comes on in place of Wayne Routledge.75:22
Graham Dorrans takes a shot. Blocked by Ashley Williams.74:14
Ben Davies fouled by Graham Dorrans, the ref awards a free kick. Ben Davies takes the free kick.73:11
Angel Rangel is ruled offside. Ben Foster restarts play with the free kick.72:44
Centre by Wayne Routledge, Chris Brunt manages to make a clearance.71:03
Ashley Williams challenges Romelu Lukaku unfairly and gives away a free kick. The free kick is delivered left-footed by Chris Brunt from right channel. The referee blows for offside. Free kick taken by Michel Vorm.70:27
Free kick awarded for an unfair challenge on Billy Jones by Wayne Routledge. Gareth McAuley takes the free kick.69:50
Foul by Liam Ridgewell on Nathan Dyer, free kick awarded. Angel Rangel takes the free kick.69:03
Roland Lamah is ruled offside. Free kick taken by Ben Foster.67:57
Jonathan de Guzman crosses the ball, blocked by Liam Ridgewell.67:31
Jonathan de Guzman takes a outswinging corner from the right by-line to the near post, clearance by Romelu Lukaku.67:13 Substitution
Substitution Roland Lamah comes on in place of Pablo Hernandez.66:24
Chris Brunt delivers the ball, save by Michel Vorm.64:37
Billy Jones produces a cross, Ashley Williams makes a clearance.60:17
Gareth McAuley provided the assist for the goal.60:17 Goal scored
Goal! - Jonathan de Guzman - West Brom 2 - 1 Swansea Own goal by Jonathan de Guzman. West Brom 2-1 Swansea.59:30
Corner taken by Chris Brunt, Gareth McAuley takes a shot. Clearance made by Angel Rangel.59:30 Substitution
Substitution Nathan Dyer is brought on as a substitute for Luke Moore.57:10
Graham Dorrans has a shot on goal from outside the area which misses left.56:07 Penalty
Penalty taken by Romelu Lukaku saved by Michel Vorm. West Brom 1-1 Swansea.54:45
Penalty awarded for a foul by Wayne Routledge on James Morrison.54:27
Graham Dorrans sends in a cross, save by Michel Vorm.53:37
Free kick awarded for a foul by Ben Davies on Jonas Olsson. Claudio Yacob restarts play with the free kick.52:53
James Morrison has a curled shot. Save by Michel Vorm.49:57
Romelu Lukaku produces a left-footed shot from deep inside the penalty area which goes wide of the left-hand post.48:41
Romelu Lukaku challenges Garry Monk unfairly and gives away a free kick. Ashley Williams takes the free kick.46:51
Free kick awarded for a foul by Pablo Hernandez on Liam Ridgewell. Ben Foster takes the direct free kick.45:01
The second half kicks off.45:00 +1:00 Half time
Half Time The referee blows for half time.45:00 +0:10
James Morrison takes a shot. Save made by Michel Vorm.43:55
Foul by Pablo Hernandez on Ben Foster, free kick awarded. Direct free kick taken by Ben Foster.42:11
Shot from just outside the box by Jonathan de Guzman goes over the crossbar.40:42
Pablo Hernandez has an effort direct from the free kick, Chris Brunt gets a block in.40:42 Booking
Booking Billy Jones receives a caution.40:39
Billy Jones challenges Miguel Michu unfairly and gives away a free kick.39:13
Graham Dorrans provided the assist for the goal.39:13 Goal scored
Goal! - Romelu Lukaku - West Brom 1 - 1 Swansea Romelu Lukaku scores a goal from inside the six-yard box to the bottom right corner of the goal. West Brom 1-1 Swansea.39:10
Centre by Graham Dorrans,38:14
Chris Brunt sends in a cross, Ashley Williams manages to make a clearance. Inswinging corner taken from the right by-line by Chris Brunt, save made by Michel Vorm.38:04
The ball is delivered by Liam Ridgewell, Garry Monk makes a clearance.37:02
The ball is delivered by Angel Rangel, Liam Ridgewell gets a block in.35:24
The ball is sent over by James Morrison, Sung-Yeung Ki manages to make a clearance.34:52
The ball is sent over by Romelu Lukaku, Michel Vorm makes a save.32:18
Assist on the goal came from Jonathan de Guzman.32:18 Goal scored
Goal! - Luke Moore - West Brom 0 - 1 Swansea Luke Moore finds the back of the net with a headed goal from close in. West Brom 0-1 Swansea.31:58
Inswinging corner taken right-footed by Jonathan de Guzman played to the near post,31:47
The ball is crossed by Ben Davies, blocked by Billy Jones.30:44
Effort on goal by Chris Brunt from just inside the area clears the crossbar.29:58
Graham Dorrans fouled by Wayne Routledge, the ref awards a free kick. Graham Dorrans takes the direct free kick.29:06
Gareth McAuley gives away a free kick for an unfair challenge on Jonathan de Guzman. Garry Monk restarts play with the free kick.28:14
The assistant referee flags for offside against Romelu Lukaku. Ashley Williams restarts play with the free kick.27:41
Unfair challenge on Gareth McAuley by Luke Moore results in a free kick. Direct free kick taken by Ben Foster.25:42
Free kick awarded for a foul by Youssouf Mulumbu on Wayne Routledge. Jonathan de Guzman takes the free kick.24:19
Centre by Pablo Hernandez, Gareth McAuley makes a clearance.21:58
Luke Moore is caught offside. Free kick taken by Jonas Olsson.21:48
The ball is crossed by Graham Dorrans, clearance made by Ben Davies.20:35
Long distance shot from Graham Dorrans misses to the left of the goal.19:10
Shot by Miguel Michu from deep inside the penalty area misses to the left of the target.18:16
Effort on goal by Graham Dorrans from 25 yards. Sung-Yeung Ki gets a block in.17:24
Luke Moore concedes a free kick for a foul on Youssouf Mulumbu. Billy Jones restarts play with the free kick.14:17
Ben Davies sends in a cross, clearance by Liam Ridgewell.13:01
The ball is delivered by Chris Brunt, clearance made by Garry Monk.10:23
A cross is delivered by Ben Davies, clearance by Claudio Yacob.6:23
Foul by Billy Jones on Wayne Routledge, free kick awarded. Jonathan de Guzman has a direct shot on goal from the free kick.5:54
Free kick awarded for a foul by Romelu Lukaku on Sung-Yeung Ki. Free kick taken by Jonathan de Guzman.5:12
Pablo Hernandez sends in a cross, Effort on goal by Miguel Michu from inside the area goes harmlessly over the bar.2:11
The ball is crossed by Pablo Hernandez, Gareth McAuley manages to make a clearance.0:00
The referee gets the game underway.
Live data and text provided by our data suppliers