Sergio Aguero scored twice as Manchester City earned a hard-fought draw at West Ham to keep in touch with Premier League leaders Leicester.
Enner Valencia struck from inside the area after 53 seconds for the Hammers but Aguero equalised with a penalty after he had been fouled.
The hosts retook the lead when Valencia capitalised on hesitant defending by Nicolas Otamendi to stab in.
However, Aguero struck from 10 yards late on to earn his side a point.
The result means Manchester City are second, three points behind Leicester, while West Ham are sixth.
Read about how the game unfolded
Reaction to all of Saturday's Premier League action
Of the sides in the top three, Manchester City boast the worst away record.
They have won just four games on the road all season, while their last five away trips have seen them pick up just six points from a possible 18, a far from ideal record for a side challenging for the title.
Against West Ham, it was their inability to complete the basics of defending that was of particular concern.
They switched off in the first minute to allow West Ham to score, but their defending for the hosts' second was particularly poor.
Michail Antonio's quick throw initially caught out Otamendi, but he still had the time to be able to clear before Valencia nipped in to poke home.
Luckily for City they had Aguero to rescue them, but with away trips to struggling Sunderland and Newcastle coming up, Pellegrini's side can ill afford such lapses in those games.
After a strong start to last season West Ham dropped away at the turn of the year, winning just three more Premier League games.
The Hammers were similarly impressive in the first half of the current campaign but, crucially, they look capable of continuing that through the second half of the season this time.
They had won three of their four games in 2016 prior to the visit of Manchester City, and boast an impressive record against top seven sides, having lost just twice to the sides around them.
In Dimitri Payet they have one of the most exciting player in the Premier League and he tormented City throughout, with only a world-class save from Hart denying him a goal.
With West Ham six points behind fourth-place Tottenham, a top-four finish might be a tough ask, but their recent form suggests they will be prompting a few nervous glances over the shoulders of their rivals.
There has been plenty of uncertainty about Yaya Toure's future in the newspapers this week, but City boss Manuel Pellegrini has urged the midfield to concentrate on helping his side challenge for the title.
Pellegrini clearly felt Toure is fully focused on the task at hand as he recalled him for the trip to West Ham, but was sluggish at the start.
He was left woefully wanting when Cheikhou Kouyate ghosted past inside a minute to set up Valencia for the opener.
In the end, Toure had more touches of the ball than any other City player, but struggled to make a telling impression in the opposition half, with only defenders Fernando and Otamendi having a worst passing accuracy than the midfielder.
More to follow.
Full Time Match ends, West Ham United 2, Manchester City 2.
90:00 +3:51 Full timeFull Time Second Half ends, West Ham United 2, Manchester City 2.
90:00 +3:45Cheikhou Kouyaté (West Ham United) hits the bar with a header from the centre of the box. Assisted by Dimitri Payet following a set piece situation.
90:00 +3:05 BookingBooking Fernando (Manchester City) is shown the yellow card for a bad foul.
90:00 +3:02Foul by Fernando (Manchester City).
90:00 +3:02Victor Moses (West Ham United) wins a free kick on the left wing.
90:00 +2:50Attempt saved. Sergio Agüero (Manchester City) right footed shot from the centre of the box is saved in the bottom right corner. Assisted by Yaya Touré.
90:00 +1:04Foul by Kevin De Bruyne (Manchester City).
90:00 +1:04Dimitri Payet (West Ham United) wins a free kick in the defensive half.
88:57 BookingBooking Yaya Touré (Manchester City) is shown the yellow card for a bad foul.
88:53Foul by Yaya Touré (Manchester City).
88:53Cheikhou Kouyaté (West Ham United) wins a free kick in the defensive half.
88:16Fernando (Manchester City) wins a free kick in the defensive half.
88:16Foul by Cheikhou Kouyaté (West Ham United).
88:14Attempt missed. Nikica Jelavic (West Ham United) with an attempt from the centre of the box misses to the left. Assisted by Dimitri Payet with a cross following a corner.
87:49Corner, West Ham United. Conceded by Fernando.
87:48Attempt blocked. Nikica Jelavic (West Ham United) right footed shot from the centre of the box is blocked. Assisted by Winston Reid with a headed pass.
87:14Corner, West Ham United. Conceded by Martín Demichelis.
86:34 SubstitutionSubstitution Substitution, West Ham United. Nikica Jelavic replaces Enner Valencia.
85:53Foul by Yaya Touré (Manchester City).
Cheikhou Kouyaté (West Ham United) wins a free kick in the defensive half.
85:44Attempt blocked. Yaya Touré (Manchester City) left footed shot from outside the box is blocked. Assisted by Kevin De Bruyne.
85:38Attempt blocked. Sergio Agüero (Manchester City) right footed shot from the right side of the box is blocked. Assisted by Kevin De Bruyne.
82:44 SubstitutionSubstitution Substitution, Manchester City. Fernando replaces David Silva.
82:20Dangerous play by Gaël Clichy (Manchester City).
82:20Victor Moses (West Ham United) wins a free kick in the defensive half.
82:10Attempt blocked. Kelechi Iheanacho (Manchester City) left footed shot from outside the box is blocked. Assisted by Kevin De Bruyne.
81:55Attempt blocked. Sergio Agüero (Manchester City) right footed shot from outside the box is blocked. Assisted by Kelechi Iheanacho.
80:04 Goal scoredGoal! Goal! West Ham United 2, Manchester City 2. Sergio Agüero (Manchester City) right footed shot from the centre of the box to the bottom right corner.
77:22Attempt missed. Kelechi Iheanacho (Manchester City) left footed shot from the left side of the box misses to the right. Assisted by Raheem Sterling.
76:46Attempt blocked. Aaron Cresswell (West Ham United) left footed shot from long range on the left is blocked. Assisted by Mark Noble.
75:37 SubstitutionSubstitution Substitution, Manchester City. Kelechi Iheanacho replaces Fabian Delph.
75:23Foul by Raheem Sterling (Manchester City).
75:23Mark Noble (West Ham United) wins a free kick in the defensive half.
71:19Attempt missed. Sergio Agüero (Manchester City) header from the centre of the box misses to the left. Assisted by Bacary Sagna with a cross.
70:17Offside, Manchester City. Raheem Sterling tries a through ball, but Sergio Agüero is caught offside.
69:18 BookingBooking Sam Byram (West Ham United) is shown the yellow card for a bad foul.
69:11Fabian Delph (Manchester City) wins a free kick on the left wing.
69:11Foul by Sam Byram (West Ham United).
68:40Foul by Raheem Sterling (Manchester City).
68:40Victor Moses (West Ham United) wins a free kick on the right wing.
67:29Nicolás Otamendi (Manchester City) wins a free kick in the defensive half.
67:29Foul by Dimitri Payet (West Ham United).
66:51 SubstitutionSubstitution Substitution, Manchester City. Raheem Sterling replaces Jesús Navas.
64:32Attempt missed. Alexandre Song (West Ham United) right footed shot from outside the box is close, but misses to the left. Assisted by Mark Noble.
64:14 SubstitutionSubstitution Substitution, West Ham United. Victor Moses replaces Michail Antonio.
60:34Offside, West Ham United. Dimitri Payet tries a through ball, but Mark Noble is caught offside.
59:41Attempt blocked. Kevin De Bruyne (Manchester City) right footed shot from the right side of the box is blocked. Assisted by Nicolás Otamendi.
58:08Attempt blocked. Fabian Delph (Manchester City) left footed shot from outside the box is blocked.
57:21Attempt blocked. Gaël Clichy (Manchester City) right footed shot from outside the box is blocked. Assisted by Yaya Touré.
55:25 Goal scoredGoal! Goal! West Ham United 2, Manchester City 1. Enner Valencia (West Ham United) right footed shot from the centre of the box to the centre of the goal. Assisted by Michail Antonio.
54:29Attempt blocked. Fabian Delph (Manchester City) left footed shot from the left side of the box is blocked. Assisted by Sergio Agüero.
51:11Foul by Jesús Navas (Manchester City).
51:11Cheikhou Kouyaté (West Ham United) wins a free kick in the defensive half.
50:39Attempt missed. Michail Antonio (West Ham United) header from the left side of the six yard box is close, but misses to the left. Assisted by Mark Noble with a cross.
49:42Corner, West Ham United. Conceded by Nicolás Otamendi.
49:30Foul by Kevin De Bruyne (Manchester City).
49:30James Collins (West Ham United) wins a free kick in the defensive half.
47:30Attempt blocked. Yaya Touré (Manchester City) right footed shot from outside the box is blocked.
46:11Fabian Delph (Manchester City) wins a free kick in the attacking half.
46:11Foul by Mark Noble (West Ham United).
45:00Second Half begins West Ham United 1, Manchester City 1.
45:00 +3:11 Half timeHalf Time First Half ends, West Ham United 1, Manchester City 1.
42:43Foul by Sergio Agüero (Manchester City).
42:43Michail Antonio (West Ham United) wins a free kick in the defensive half.
41:49Corner, West Ham United. Conceded by Fabian Delph.
38:27 BookingBooking Mark Noble (West Ham United) is shown the yellow card for a bad foul.
38:18Jesús Navas (Manchester City) wins a free kick on the right wing.
38:18Foul by Mark Noble (West Ham United).
35:11Attempt missed. Dimitri Payet (West Ham United) right footed shot from the centre of the box misses to the left. Assisted by Cheikhou Kouyaté with a headed pass.
33:51Foul by Jesús Navas (Manchester City).
33:51Dimitri Payet (West Ham United) wins a free kick in the attacking half.
33:07Corner, West Ham United. Conceded by Joe Hart.
33:04Attempt saved. Dimitri Payet (West Ham United) right footed shot from outside the box is saved in the top right corner.
31:26 BookingBooking Martín Demichelis (Manchester City) is shown the yellow card for a bad foul.
31:23Foul by Martín Demichelis (Manchester City).
31:23Michail Antonio (West Ham United) wins a free kick in the attacking half.
29:47Fabian Delph (Manchester City) wins a free kick in the defensive half.
29:47Foul by Cheikhou Kouyaté (West Ham United).
27:03Gaël Clichy (Manchester City) wins a free kick in the defensive half.
27:03Foul by Sam Byram (West Ham United).
25:21Foul by Kevin De Bruyne (Manchester City).
25:21Sam Byram (West Ham United) wins a free kick in the defensive half.
23:44Delay over. They are ready to continue.
23:09Delay in match Cheikhou Kouyaté (West Ham United) because of an injury.
18:34Corner, Manchester City. Conceded by Mark Noble.
15:58David Silva (Manchester City) wins a free kick on the left wing.
15:58Foul by Mark Noble (West Ham United).
14:13Foul by Nicolás Otamendi (Manchester City).
14:13Michail Antonio (West Ham United) wins a free kick on the left wing.
13:31Foul by Jesús Navas (Manchester City).
13:31Dimitri Payet (West Ham United) wins a free kick in the attacking half.
12:17 SubstitutionSubstitution Substitution, West Ham United. Sam Byram replaces Carl Jenkinson because of an injury.
11:29Delay over. They are ready to continue.
10:17Delay in match Carl Jenkinson (West Ham United) because of an injury.
8:46 Goal scoredGoal! Goal! West Ham United 1, Manchester City 1. Sergio Agüero (Manchester City) converts the penalty with a right footed shot to the bottom left corner.
7:23Penalty Manchester City. Sergio Agüero draws a foul in the penalty area.
7:23Penalty conceded by Carl Jenkinson (West Ham United) after a foul in the penalty area.
6:30Sergio Agüero (Manchester City) hits the right post with a left footed shot from the left side of the box. Assisted by Yaya Touré following a set piece situation.
6:18Fabian Delph (Manchester City) wins a free kick in the attacking half.
6:18Foul by Alexandre Song (West Ham United).
5:50Attempt blocked. Jesús Navas (Manchester City) left footed shot from the centre of the box is blocked. Assisted by David Silva.
4:12Corner, Manchester City. Conceded by James Collins.
2:09Yaya Touré (Manchester City) wins a free kick in the attacking half.
2:09Foul by Cheikhou Kouyaté (West Ham United).
0:53 Goal scoredGoal! Goal! West Ham United 1, Manchester City 0. Enner Valencia (West Ham United) right footed shot from the centre of the box to the centre of the goal.
0:00First Half begins.
0:00Lineups are announced and players are warming up.
Live data and text provided by our data suppliers