After losing 13 games and drawing five of their previous 18 visits to this part of the Potteries, it required two mistakes from Stoke goalkeeper Thomas Sorensen to gift Albion the points.
Sorensen first allowed past him a low 30-yard shot from James Morrison, and after substitute Cameron Jerome seemingly salvaged a point in the 86th minute, Dorrans then beat the Danish stopper in injury time with a 25-yard free-kick.
In fairness, Albion thoroughly deserved this rare win over their Midlands rivals as Morrison also twice hit the woodwork, whilst they carved out other more memorable opportunities to end a run of three straight league defeats.
The first came in the fifth minute, with winger Jerome Thomas thwarted by the outstretched left foot of Sorensen after shaking off the challenge of right-back Jonathan Woodgate.
Thomas then turned supplier in the 14th minute, picking out Simon Cox just inside the area with a delightful pull back, only for the Republic of Ireland international to slice his shot horribly wide.
It was not until midway through the first half that Stoke finally created their first effort, albeit somewhat fortuitously as a long punt upfield was missed by both Nicky Shorey and Gabriel Tamas.
That allowed Jonathan Walters a clear run on goal, but as he fired off an early shot, Tamas did superbly to backtrack and produce a vital block.
Moments later Morrison tested Sorensen for the first time after being allowed a 20-yard run on goal before letting fly with a rasping shot from 25 yards.
However, leaping to his left, Sorensen brilliantly tipped the ball onto his crossbar.
It was a portent of what followed just moments later, and at first there was no danger when captain Ryan Shawcross cleared a long ball upfield.
Collecting Youssuf Mulumbu’s nod forward inside the centre circle, Morrison was still 70 yards from goal, but he was allowed to run and run by a Stoke side that stood off him before he struck a 30-yarder directly at Sorensen.
The City goalkeeper should have collected, only to be beaten by a slight last-second swerve on the ball, clawing at it desperately as it ran behind him and crossed the line.
One contentious moment before the half ended when Peter Crouch and Albion skipper Jonas Olsson clashed, the latter returning after missing the previous four games with a calf injury.
The Stoke striker reached around the front of the centre back, with his right hand coming in contact with Olsson’s face.
Fortunately for Crouch the incident was missed by referee Anthony Taylor, but picked up on replays as it was shown a couple of times, whilst Olsson to his credit did not make a meal of it.
Inside the first six minutes of the second half Albion should have put the game to bed, but first Marc-Antoine Fortune was denied by a block from Robert Huth after a pull back from Dorrans.
Within a minute Sorensen was beaten again by Morrison, only for the Scot to despair as his stunning hooked half-volley from 20 yards struck the right-hand post.
When Jermaine Pennant replaced Woodgate in the 52nd minute, a previously off-colour Stoke side raised their game.
Marc Wilson first fired a 25-yard drive wide and Walters glanced a header inches past the right-hand post.
In between, with gaps on the counter, Cox’s failure to adequately connect with a sidefoot shot after racing onto a clearance from Foster and stealing in behind the Stoke defence allowed Sorensen to save.
The reprieve seemed mighty in the 71st minute when referee Anthony Taylor harshly appeared to have awarded a penalty when Walters ran into Gareth McAuley.
But from the spot the Stoke striker went for power, with his shot striking the left knee of a diving Foster.
With the game reaching its conclusion, 73rd-minute sub Jerome then glanced Pennant’s right-wing free-kick beyond Foster 13 minutes later, seemingly keeping the hoodoo alive.
But in the first minute of injury time Sorensen was guilty of allowing Dorrans’ long-range free-kick flash past him into his bottom left-hand corner to further add to his afternoon of woe.