Fulham seemed sure to take the points with a minute left courtesy of Dimitar Berbatov’s expert finish, but Robson-Kanu bundled home at the death to ensure a draw.
Brian McDermott’s hosts – without a Premier League win this season – were bright early on and would have led but for Pavel Pogrebnyak heading wastefully wide from three yards out.
At the other end, Berbatov began to drop slightly deeper to link up play, and the Bulgarian had flown a warning shot over from 25 yards by the time he teed up for Mahamadou Diarra to do the same.
In the event, it was Mikele Leigertwood who found the net first – the midfielder striding onto Jobi McAnuff’s lay-off and flying a sweet drive into the top corner from 20 yards.
Damien Duff wasted an inviting chance to equalise just before the break when he sent Kieran Richardson’s cut-back wide of goal, and Jason Roberts nearly punished his folly early in the second period when his effort was smothered by Mark Schwarzer.
But on the hour, substitute Bryan Ruiz announced himself with a stunning 20-yard strike that gave Alex McCarthy no chance – and Fulham continued to look the more threatening as Berbatov dragged into the side-netting.
Home fans fell silent with 13 minutes left when Chris Baird nodded home John Arne Riise’s corner from close-range – but three goals in the final five minutes meant proceedings were far from over.
Garath McCleary, also on as a substitute, benefited from Roberts’ miscontrol to convert from eight yards with an assured finish, only for the Cottagers to surge ahead again when Berbatov bent home beautifully in the 88th minute.