Christian Benteke's early opener was cancelled out by Victor Anichebe, only for Gabriel Agbonlahor to put Villa back in front in a thrilling first half.
Benteke grabbed his second of the game to give Villa a 3-1 lead, but his fellow Belgian Fellaini had the last laugh with two goals, his second three minutes into injury time, to salvage a point for David Moyes' men.
Aston Villa dropped into the relegation zone following a midweek loss to Newcastle but there were positives in their second-half performance and Paul Lambert's side made the perfect start at Goodison Park as Benteke latched on to a Charles N'Zogbia pass and shrugged off the challenge of John Heitinga to open the scoring with a neat finish after just two minutes.
Fellaini missed a chance to equalise moments later as he curled a shot narrowly wide from the edge of the area, while Darron Gibson had an effort deflected off target and Leighton Baines blazed over with an ambitious free-kick from 30 yards as Everton continued to press.
Their efforts were rewarded in the 21st minute as Anichebe showed good strength to spin Ciaran Clark after collecting a ball from Kevin Mirallas, before firing low past Brad Guzan.
Villa restored their advantage almost immediately thanks to a firm header by Agbonlahor from Ashley Westwood's right-wing cross, but were then pinned back inside their own half for the remainder of the first half as Everton again tried to hit back.
Mirallas was brought down by Joe Bennett inches outside the area, while Leon Osman went close with a shot that flew just outside of Guzan's post via a deflection.
Everton kept up the intensity at the start of the second period but it was Villa who carved out an early chance as Andreas Weimann beat the offside trap to run on to a pass from Agbonlahor. However, he lacked composure with a wild shot high into the stands.
Benteke made no such mistake just after the hour mark as Matthew Lowton delivered an inviting cross from the right and the powerful striker again got the better of Heitinga to head home.
Fellaini reduced Everton's arrears in the 69th minute when he poked the ball into the bottom corner following a clever lay-off by Anichebe, setting up an exciting climax.
It looked like Aston Villa would hold on for an important victory to boost their survival hopes, but Fellaini struck again in the dying seconds as he headed home a Baines corner.
Fellaini could have won it even later but shot straight at the goalkeeper, as Everton drew level with fourth-placed Tottenham Hotspur and Villa were left two points from safety.