Stoke might still be without an away win all season but proved in the second half that they are capable of posing a serious threat going forward.
That said, their 5-4-1 formation encouraged Villa to flood forward in the opening stages and, were it not for some heroic defending, the home side could have claimed a resounding triumph.
O'Neill made eight changes to the side that that was knocked out of the Uefa Cup by CSKA Moscow in midweek, with the likes of Gareth Barry, Ashley Young, Gabriel Agbonlahor and Emile Heskey all returning to the starting line-up.
Given that this was Villa's 44th game of the season - three more than they played in the whole of last term - O'Neill decision to rest his key men was understandable and the hosts responded with a bright start.
Stoke were twice forced to scramble the ball clear from Luke Young crosses but Tony Pulis' men did occasionally venture forward and Mamady Sidibe went close with a deflected drive after Curtis Davies had failed to clear.
Draw feels like defeat - O'Neill
Villa pushed for a breakthrough but they were repeatedly frustrated, Heskey narrowly failing to connect with Barry's fizzed pass and Zat Knight heading James Milner's in-swinging cross on to the roof of the net.
It seemed as though Stoke's incisive tackling and astute positional play had seen them through to the break unscathed but Villa, to their credit, ploughed on and were rewarded.
Petrov collected possession on the right-hand side of the Stoke penalty area and lashed a stinging effort past former Villa goalkeeper Thomas Sorensen, who appeared to lose sight of the ball as it flew through a crowd of bodies.
Sorensen was forced off at half-time with a neck injury and, after the re-start, Villa immediately looked to test his replacement Steve Simonsen with a series of aerial balls into the box.
But it was Stoke who showed a greater desire to get forward in numbers and the introduction of Ricardo Fuller on 54 minutes - just three weeks after dislocating a shoulder - had a telling effect.
Pulis delighted to snatch late draw
On 61 minutes, the Jamaican shrugged off Davies and was one-on-one with Villa goalkeeper Brad Friedel when Young arrived with a superb sliding tackle.
Fuller then spun and volleyed just over the crossbar as Stoke pushed hard for a way back into the game.
That appeared beyond them when substitute Carew, on for Heskey after the England striker damaged an Achilles, swept Petrov's neat pass over the head of Simonsen from 25 yards out.
Villa were given further warning of the threat Stoke posed when Shawcross outjumped Davies and Knight to nod Liam Lawrence's corner over the bar.
Moments later, Shawcross was in a similar position to powerfully head the superb James Beattie's centre into the bottom corner.
As the final whistle approached Villa began to panic and, after failing to clear Salif Diao's long ball forward, Whelan beat Friedel with a crisp strike from outside the box.
Aston Villa manager Martin O'Neill:
"We were more than disappointed in the dressing room afterwards. In fact, everyone was devastated.
"We were in total control at 2-0 and with five minutes to go you should be able to see a game out.
"It didn't materialise and we have dropped two points. For the first time today I thought there was a degree of over-confidence about us."
Stoke manager Tony Pulis:
"For long periods we were hanging on against a very good Villa side. In the first half we were very poor but that was down to me. We tried to eliminate their wide players but it just didn't work.
"We went back to a normal 4-4-2 and it was better in the second half. When John Carew scored, you think the game is over but we had five great chances in the second half and this is an important point for us.
"Everyone outside Stoke thinks we are the team that will get relegated. But we think we are going to stay up so the pressure is on everyone else."
Aston Villa: Friedel, Cuellar, Knight, Davies, Luke Young, Milner, Petrov, Barry, Ashley Young, Agbonlahor, Heskey (Carew 76).
Subs Not Used: Guzan, Harewood, Delfouneso, Reo-Coker, Shorey, Gardner.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.