The striker took his league tally to eight for the season with successful spot-kicks in the 22nd and 55th minutes before Guly Do Prado and Lee Holmes added further goals in the final 20 minutes.
Middlesbrough were held to their third successive goalless draw as they claimed a point against Reading at the Madejski.
Fourth-placed West Ham twice recovered from going a goal down to draw 2-2 at Crystal Palace, efforts from Kevin Nolan and John Carew cancelling out goals from Darren Ambrose and Glenn Murray for the hosts.
Brighton manager Gus Poyet was unable to celebrate his new five-year contract with the club with a victory as his side slumped to a 3-1 loss at Ipswich. Vicente Rodriguez gave the Seagulls a 53rd-minute lead but Ipswich hit back with three goals in 14 minutes to earn the win, Michael Chopra's brace sandwiching an effort from Ibrahima Sonko.
Hull replaced Cardiff in the top six after defeating the Welsh side 2-1. Substitute Nick Barmby hit a 71st-minute winner for the Tigers not long after Bluebirds replacement Joe Ralls had equalised Matt Fryatt's first-half opener for the home side.
Blackpool moved up to seventh with a 5-0 mauling of Bristol City, Daniel Bogdanovic (two), Gary Taylor-Fletcher, Jonjo Shelvey - on his debut following his loan switch from Liverpool - and Brett Ormerod netting the goals for Ian Holloway's men.
City dropped to the foot of the standings after suffering their sixth defeat of the campaign as Doncaster climbed off the foot after recovering from a half-time deficit at Peterborough to record their first away points of the season. Goals from Brian Stock and Kyle Bennett overturned Grant McCann's opener for Posh.
Millwall slip into the bottom two after going down to a solitary Jay Rodriguez goal at home to Burnley while a first-half Danny Pugh goal was enough for Leeds to see off Portsmouth at Elland Road and lift them into the top 10.
Also, Barnsley recorded their first home league win of the season after beating fellow strugglers Coventry 2-0 thanks to goals either side of half-time from Andy Gray, the first coming from the penalty spot.
Source: PA
Source: PA