Andy Carroll scored a fine goal to give the visitors the lead before the break but Swansea levelled things late on when a header by Bafetimbi Gomis found the net via Mark Noble.
The Hammers, with Neil McDonald taking charge on the bench due to an illness to Sam Allardyce, almost forced a winner but found Lukasz Fabianski in good form and the points were shared.
McDonald had West Ham lined up in a 3-5-2 formation and the away side appeared content to soak up pressure in the early stages as Swansea started the brighter.
Gomis, deputising for Manchester City target Wilfried Bony while the Ivorian is on Africa Cup of Nations duty, had the first opportunity but couldn’t get on the end of Nathan Dyer’s cross.
However, the Hammers soon got a foothold in the game with Carroll holding the ball up well in attack and Carl Jenkinson and Kevin Nolan each curling right-footed efforts over the bar.
Gomis looked a real handful for the Swans but was dispossessed when one-on-one with James Tomkins and further chances were spurned by Gylfi Sigurdsson.
Twice the attacking midfielder was fed by Dyer on the right but he failed to connect properly both times and the home side were soon made to pay for their profligacy in front of goal.
Stewart Downing swung in a cross from the left and Carroll took the ball on his chest before nodding it away from Ashley Williams.
There was still plenty of cover but Carroll proceeded to drop the shoulder to buy a yard of space from Federico Fernandez and curled the ball left-footed into the far corner of the net.
Garry Monk’s side attempted to respond immediately but Jenkinson produced a brilliant piece of last-ditch defending to deny Wayne Routledge from point-blank range.
After the interval, West Ham continued to look a threat with Jenkinson enjoying his wing-back role and finding Carroll with a low cross to the near post that the striker fired just wide of the post.
James Collins subsequently headed wide from Downing’s corner before Enner Valencia almost latched onto an Adrian goal-kick when Rangel misjudged his header back to his own goalkeeper.
Swansea’s possession failing to find a way beyond a compact West Ham defence to the frustration of the crowd with one overhit cross by Routledge seeming to sum things up.
Monk tried to freshen things up by removing Dyer and Routledge for Modou Barrow and Marvin Emnes and the latter immediately set up Gomis only for the striker to spoon his shot over the bar.
But with West Ham defending ever deeper, the equaliser did come in the 74th minute when Gomis headed Sigurdsson’s left-wing corner against the post and the ball ricocheted in off Noble.
Gomis didn’t seem to mind and appeared overcome by emotion when celebrating with a French flag, calling to mind the tragic events in Paris earlier in the week.
If that might have been the prelude to some late Swansea pressure, West Ham had other ideas with Downing and Jenkinson forcing fine saves from Fabianski in quick succession.
A sweeping move from West Ham led to another corner that Tomkins headed goalwards only for Neil Taylor to clear off the line as Swansea looked to be buckling.
Aaron Cresswell tested Fabianski with a low free-kick that the goalkeeper spilled and Carroll looked set to bundle home the winner only for the Pole to react quickly to deny him.
There were no further opportunities and while Swansea and West Ham extend their winless streaks to three and four games respectively, their efforts showed why both remain in the top half.
Soccer Saturday analysis – Matt Le Tissier
Fabianski was the busier goalkeeper of the two and Swansea probably had a little more possession than West Ham, but I thought in the end a draw was a pretty fair result. Fabianski made a couple of very good saves, particularly one from Downing. I would imagine Arsenal are maybe looking at that and thinking ‘he may be better than what we’ve got’. I was really impressed with Jenkinson down the right-hand side; he pushed on a lot during the game and got himself into some good crossing positions. He was a real threat down the right-hand side.
Swansea: Fabianski (7), Rangel (6), Fernandez (6), Williams (6), Taylor (7), T.Carroll (6), Britton (6), Dyer (7), Sigurdsson (6), Routledge (5), Gomis (7).
Subs: Emnes (6), Barrow (6), Oliveira (6).
West Ham: Adrian (6), Jenkinson (7), Tomkins (7), Reid (7), Collins (7), Cresswell (6), Noble (6), Nolan (6), Downing (7), Valencia (7), A.Carroll (8)
Subs: Amalfitano (6), Poyet (6).
Man of the match: Andy Carroll.