A villain one match, a hero the next.
Dan Petrescu proved a week is a long time in football by scoring City's last-gasp equaliser at Upton Park.
The 32-year-old Romanian international was substituted 20 minutes from the end after a poor performance in the 1-0 defeat against Southampton at Valley Parade the previous week.
But Petrescu cast aside widespread criticism as he bounced back to score City's first away goal of the season and earn their first point on their travels.
It was his first goal for the club since his £1 million summer transfer from Chelsea, but more importantly the point lifted City off the bottom of the table.
Time was ticking away with City heading for their third league defeat in a row when they were awarded a free kick 25 yards from goal.
Benito Carbone took the kick and it looked suspiciously like a shot aimed for the top corner that might have gone wide. However, Petrescu managed to divert the ball, heading it into the far corner of the net past a stunned West Ham defence.
Delighted manager Chris Hutchings admitted it wasn't a move practised on the training ground, and said: "Beni curled one in from 25 yards. Trevor Sinclair was marking Dan Petrescu, but decided to leave him and stand on the line, which allowed Dan to find space to head the ball into the net. Perhaps we were a little bit fortunate to score the goal, but we haven't had much luck this season."
While Petrescu and Carbone captured the headlines, City's main heroes were the defenders who kept them in the game when West Ham were on top.
Hutchings devised a special system to try to combat West Ham's free-flowing attacking style, playing a three-man central defence with skipper Stuart McCall alongside Peter Atherton and David Wetherall.
Jamie Lawrence, making his first Premiership appearance of the season, marked talented 18-year-old Joe Cole who has been called into England's World Cup qualifying squad, while Atherton was given the job of keeping tabs on his former Sheffield Wednes-day team-mate, the mercurial Paolo Di Canio.
Neither could completely subdue the dangerous pair as West Ham piled on the pressure during their best spell in the first half. City managed to soak up most of the attacks, but were helpless in the 26th minute when Frederic Kanoute raced down the right and centred for Cole to head the Hammers into a deserved lead.
The Bantams survived until half-time, but a minute before the interval they suffered more injury problems when midfield player Gareth Whalley was stretchered off with an ankle ligament injury after a collision in the centre circle with Kanoute.
Hutchings brought on Gunnar Halle to replace him and he took over the job of marking Cole as West Ham put City under intense pressure in a bid to score the second goal which would probably have sealed the match.
The closest they came to that, though, was when McCall superbly cleared Stuart Pearce's header off the line with Matt Clarke beaten.
Then Halle produced a great saving tackle on Kanoute in the 66th minute when the West Ham player looked a certain scorer and Clarke produced the best save of the match as he pushed a 20-yard shot from Carrick on to the post.
Halle hurt his calf in the tackle and after limping for five minutes he was taken off.
West Ham appeared to settle for a 1-0 scoreline as City came more into the match in the closing stages and were rewarded with their equaliser.
Hutchings said: "We had to dig deep, but we got our just rewards for our endeavour and hard work. It was such an open game when we lost there 5-4 last season that I knew we had to tighten up.
"We did a man-marking job on Cole and Di Canio - I knew we had to try to keep them quiet.
"Stuart McCall did very well in his defensive role, but West Ham have got lots of top quality players and fantastic talent and it is very difficult to deny them.
"I felt we stood off them a bit in the first half and we had to get closer to them, which we did after half time. I felt the crowd started getting on their backs."
Comments: Our rules
We want our comments to be a lively and valuable part of our community - a place where readers can debate and engage with the most important local issues. The ability to comment on our stories is a privilege, not a right, however, and that privilege may be withdrawn if it is abused or misused.
Please report any comments that break our rules.
Read the rules hereComments are closed on this article