Premier League - Everton and Villa share spoils
But Gabriel Agbonlahor netted seven minutes from time to earn Villa a point.
Despite earlier unrest with a pre-match protest about the club's financial difficulties, the home side began brightly and enjoyed the majority of the first-half possession.
Everton missed an opportunity to go ahead as early as the 10th minutes as Osman's header hit the post and Phil Jagielka's effort was cleared off the line.
Although short of striking options, Tim Cahill and Osman formed an effective partnership up front, and after some quick thinking and a well-worked pass from the Australian, Osman found the target with a low, left-footed strike past Shay Given on 19 minutes.
The Toffees' dominance continued, and they should have gone into half-time more than just one goal to the good as Jack Rodwell and Jagielka missed further chances.
The visitors began the second-half with a lot more promise and Petrov put Villa back on level terms on the hour mark with a superb shot from 30 yards out. His effort screamed past Tim Howard's outstretched fingertips.
But the home side almost hit back immediately and Shay Given was forced into making an impressive save from Cahill's header.
They were rewarded moments later, though, as Fabian Delph gave Jagielka a shove in the box and referee Michael Oliver awarded a penalty. Baines stepped up to restore Everton's lead as he sent Given the wrong way.
Villa were not to be denied though and when Marc Albrighton sent a cross over from the left to Agbonlahor, in space, and his late header denied the home side all three points and their first back-to-back Premier League wins since April.