Blackburn Rovers 3 Portsmouth 1
The ex-Portsmouth striker came off the bench to score twice against his former club, his goals coming either side of a rare effort from skipper Ryan Nelsen.
That completed a remarkable turnaround for the home side, who were earlier booed off by their own supporters as they trailed 1-0 to a first-half strike from Jamie O'Hara.
Rovers were given an early taste of things to come when O'Hara tried his luck with a shot from distance during the opening skirmishes.
However, the home side failed to heed that warning because in the 16th minute, Pompey took the lead from an almost identical situation.
Kevin-Prince Boateng received the ball from a throw-in and promptly fed O'Hara, who was in space 30 yards out.
With no defender close enough to get in a challenge, the Pompey midfielder had time to take aim before unleashing a low drive that snaked past Paul Robinson and into the bottom corner.
Rovers were visibly deflated by that setback and they spent the rest of the half fruitlessly launching the ball forwards, much to the displeasure of the home support, who booed their team off at half-time.
Manager Sam Allardyce took decisive action at the beginning of the second half, replacing the disappointing Morten Gamst Pedersen and El Hadji Diouf with Roberts and Benni McCarthy, and the move paid instant dividends as Rovers got back on level terms in the 53rd minute.
A deep corner from David Dunn was headed back into the danger zone by Nelsen and Roberts chested the ball down before flicking a shot past David James from inside the six-yard box.
Suddenly the momentum was back with Rovers and, after a spell of pressure, they took the lead in the 73rd minute.
Once again it came from a set-piece with Dunn delivering a corner from the right and Nelsen came steaming in to power an unstoppable header past James.
Roberts then grabbed his second in the 86th minute, racing in to bury a shot past James after sweeping move involving Dunn and McCarthy.