The Potters went ahead in the first half thanks to a brilliant set-piece which saw Walters make a perfectly-timed run from the far post to greet Glenn Whelan’s ball with a clinical finish.
But Sam Allardyce’s men came out fighting after the break and O’Brien proved the unlikely hero as he prodded home Gary O’Neil’s cross after some solid work from Mohamed Diame.
The hosts saw more of the ball in the opening 10 minutes but Stoke showed their usual aerial threat on a couple of occasions, most notably when Ryan Shawcross angled a long ball forward which Peter Crouch knocked down into the path of the onrushing Charlie Adam, who could not keep his shot down.
Unsurprisingly Stoke’s opening goal came from a set-piece but it was not scored in the manner usually associated with Tony Pulis’ side.
George McCartney cleared the ball behind after 12 minutes and Whelan rolled the corner across the ground and into the area where a clever run from the far post allowed Walters to convert with a thumping effort past Jussi Jaaskelainen.
West Ham were struggling to break down a resolute Stoke defence that had been given something to protect thanks to Walters’ early goal.
The visitors came within inches of doubling their lead seven minutes before half-time as Steven N’Zonzi fired in a shot from 25 yards that crashed off the crossbar and bounced just in front of the goalline with Jaaskelainen well beaten.
West Ham should have equalised within a minute of the start of the second half as Diame combined well with Modibo Maiga down the left flank to free McCartney.
The left-back’s cross was perfect for Nolan but the Hammers’ skipper put his header too close to Asmir Begovic.
The leveller did come only moments later as Diame’s shot was charged down and O’Neil delivered from the right for O’Brien to convert from the middle of the goal.
West Ham may have missed out on the chance to move up to fifth in the table but will have been pleased to take a deserved point after a revived second-half display, while Stoke remain 14th.