
Michael Ballack looked to have won it for Chelsea when he put them ahead four minutes from time but Ashley Cole was sent off in injury time for handling the ball on the line and Gareth Barry converted the penalty to clinch a point.
The result leaves Chelsea four points behind Manchester United in third, with Arsenal one point clear at the top.
When Shaun Maloney scored twice to put Villa 2-0 up after 43 minuts, an upset looked more than likely, but Zat Knight was sent off for a professional foul on Ballack on the stroke of half-time and Andriy Shevchenko scored from the penalty spot.
Shevchenko smashed in the equaliser from 20 yards soon after the restart and Alex put them ahead just after the hour mark only for Martin Laursen to make it 3-3 with 20 minutes to go.
The Germany captain Ballack - who came on early as a substitute for injured Frank Lampard - then scored from a free-kick and Chelsea seemed to have clinched it, only for Barry to deny them from the spot.
In other early action on Wednesday, Tottenham Hotspur hammered Fulham 5-1, with Roy Keane and Tom Huddlestone both scoring twice. West Ham United and Reading drew 1-1 at Upton Park.