Glenn Murray put the hosts in front in the 26th minute, heading home from Jonathan Williams's miscued cross to bring up his 28th goal of the season.
The ball then broke for Luke Varney, but his effort was cleared off the goal line.
That meant that Leeds trailed at the break, but they restored party to the scoreline 11 minutes after the restart.
Varney found Steve Morison with a good cross and the striker finished nicely beyond Speroni.
The game was turned completely on its head when Morison bagged his second of the game with a smart volley in the 69th minute.
However, Murray rescued a point for the hosts with a nice side-footed finish with six minutes remaining.