In a first half of few chances, Hammers defender James Collins' header clipped the bar before Collison netted in stoppage time, finishing on the turn after collecting a through-ball from his fellow substitute Ricardo Vaz Te.
It proved to be the winner, with Potters substitute Charlie Adam seeing his late volley crack against the bar. The hosts' protests that Guy Demel had handled in the area were then waved away by referee Jonathan Moss.
The Hammers made a less than ideal start, having to make two substitutions in the opening 11 minutes. Matt Taylor took a boot in the face as Peter Crouch attempted an overhead kick, with Collison coming on in his place, and moments later Joe Cole trudged off injured to be replaced by Vaz Te.
The contest was struggling to spark into life but West Ham went close to an opener in the 25th minute when Collins looped a flicked header on to the bar.
Collison was then denied by Asmir Begovic before Andy Carroll headed well wide.
The Hammers continued to look the more likely scorers and they broke the deadlock in the 45th minute when Collison picked up a pass from Vaz Te and fired beyond Begovic.
Stoke had a penalty appeal waved away at the start of the second half before Matt Jarvis saw his shot saved by the legs of Begovic.
Crouch then brought a stop out of Jussi Jaaskelainen as Stoke sought an equaliser, which they almost snatched in stoppage time when Adam rifled a volley against the goalframe.
Even deeper into the additional time, the Potters cried out for a handball against Demel but Moss said no as West Ham held on.