Tim Cahill had the final word in a topsy-turvy match to keep Everton’s hopes of reaching the Europa league alive.
Ayegbeni Yakubu had a major impact in a 12-minute substitute appearance, scoring one and setting up a last-minute winner in the win.
Mikel Arteta’s fourth-minute penalty had been cancelled out by Rovers midfielder Steven Nzonzi’s 30-yard drive midway through the second half before the introduction of the Nigeria international.
It kept alive Everton’s late bid for a European place, moving them to within two points of sixth-placed Liverpool, who play West Ham on Monday.
Arteta turned Gael Givet and was in the process of doing the same to Ryan Nelsen when the Rovers captain dived in and brought him down with his trailing leg.
Arteta converted from the spot to become the first person to beat Paul Robinson since Birmingham forward James McFadden’s goal on March 24, ending an unblemished record of more than five hours. Steven Nzonzi succeeded in the 68th minute.
There appeared to be little danger when Dunn played the ball back to him but he side-stepped Arteta, advanced and blasted a swerving 30-yard shot past Howard.
The goal was just the confidence boost Rovers needed and Everton looked rattled as Nelsen headed Dunn’s free-kick on to the top of the net.
But having tested their opponents all afternoon with set-pieces Blackburn fell victim to one themselves.
Baines’ 78th-minute long-throw was flicked on by substitute Victor Anichebe and Yakubu bundled the ball home with his first touch just 22 seconds after his introduction.
Rovers’ response was instant as less than two minutes later Kalinic helped the ball forward for Roberts to thrash a 20-yard shot past Howard.
The feeling was there was still another goal left in the game and it went to Everton in the 90th minute.
Yakubu somehow found space on the left of the area and rolled a pass into the six-yard box where Cahill tapped home to deny Blackburn a point.