Matt Taylor came to Bolton Wanderers' rescue with a minute remaining by scoring from the penalty spot at the Reebok Stadium.
The midfielder showed a cool head after Stoke City's Danny Collins had been hauled back for a challenge on Sam Ricketts.
Stoke were stunned as they were in sight of their first away victory on the road in the league this season.
Dave Kitson had given them the lead in the 52nd minute with his third goal in six matches in all competitions.
Stoke were the brighter of the two teams in the first half and made a break inside the first minute when Ricardo Fuller got clear down the right flank.
He delivered the ball into the area only for Fabrice Muamba to get there ahead of Matthew Etherington and make the clearance.
Stoke then found themselves on the back foot in the 15th minute when goalkeeper Jussi Jaaskelainen launched the ball forward.
Kevin Davies won the aerial battle with former team-mate Abdoulaye Faye, leaving him dazed on the floor.
McCann tried his luck from 25 yards in the 20th minute but Thomas Sorensen was able to make a comfortable save before Gary Cahill sent a header wide for the home side.
Stoke, however, almost took the lead after 32 minutes when Tamir Cohen was punished for a challenge on Fuller.
Glenn Whelan tried to curl the free-kick from 25 yards beyond Jaaskelainen only for the goalkeeper to react swiftly and push his effort to safety.
Stoke kept up the pressure and a long throw from Rory Delap caused Jaaskelainen problems.
He could only parry the ball to Kitson but the striker could not get a decent enough touch and the chance was lost.
Bolton responded and Taylor came close in the 51st minute when he clipped a shot wide of the post after substitute Ricardo Gardner had carved out the opening.
A minute later Stoke made the breakthrough with a fine goal from Kitson. He latched on to a ball from Fuller and showed good skill to get away from Sam Ricketts.
Kitson then steadied himself before rattling a shot into the corner.
It was a clinical finish from a player who did not score for the club last season and was loaned back to Reading.
It was just the boost Stoke were looking for after the home defeat by Chelsea last weekend.
Bolton kept pressing forward in search of the equaliser and substitute Ivan Klasnic saw his close-range effort turned over by Thomas Sorensen in the 68th minute.
Then Zat Knight cleared the bar with a volley when it seemed easier to score.
Stoke were looking to extend their lead and Fuller made space in the penalty area after 72 minutes but his effort failed to trouble Jaaskelainen.
Bolton kept working away but the visitors were looking well organised at the back.
Stoke were also dangerous on the counter attack and substitute Danny Pugh saw his effort turned away by Jaaskelainen in the 88th minute.
A minute later Bolton grabbed the equaliser through Taylor but Jaaskelainen had to made a brave block from substitute Liam Lawrence in stoppage time to prevent him snatching the winner.
However this is a difficult time for the home side, who have managed just one win in five league matches.