Not since Roberto Martinez's men beat QPR 2-0 in August had Latics picked up three points at home while they also made it back-to-back wins for the first time all season following last weekend's victory over Liverpool at Anfield.
It had seemed like it would be another case of what might have been when Franco Di Santo and Jean Beausejour missed glorious chances in the first half but Alcaraz headed in emphatically in the 54th minute and Moses made sure in injury time.
The only negative for Wigan was victories for fellow strugglers QPR and Bolton, which meant they stayed in the bottom three on goal difference.
Stoke brought good memories for Latics, who have lost only once to Tony Pulis' side in the Premier League and secured their top-flight status with a 1-0 win at the Britannia Stadium on the final day of last season.
The visitors, playing their 49th game of a hectic campaign, had the first chance when Ryan Shawcross got his head to a Jermaine Pennant corner but Ali Al Habsi was alert.
And moments later a mistake from Andy Wilkinson let in Di Santo but the Argentinian never looked entirely confident running at Asmir Begovic, who nevertheless did well to block the shot.
Wigan continued to press for the opener and Begovic had to be alert to keep out Shaun Maloney's volley in the 15th minute, while Stoke had a rare opening thanks to a miscued clearance from Emmerson Boyce but Jon Walters steered his volley just wide.
Wigan really only had themselves to blame for failing to take the lead five minutes before the break when Moses sent a perfect cross along the six yard line but Beausejour somehow failed to guide the ball into an empty net.
The bobbly pitch arguably did the winger no favours but it really was an astonishing miss.
Wigan wanted a penalty in the opening minute of the second half when Dean Whitehead handled but referee Mark Clattenburg was unmoved despite being surrounded by Latics players.
Stoke made their first substitution a couple of minutes later, with Cameron Jerome replacing Matthew Etherington, who looked like he was still struggling following a first half tackle from Boyce.
Wigan had resumed their pressing and probing and in the 54th minute they finally found a moment of precision to take the lead.
Maloney, who had caused Stoke problems all afternoon, played in Beausejour down the left and he made up for his horror miss with a lovely cross to pick out defender Alcaraz, who powered a header into the bottom corner for his first Wigan goal of the season.
Pulis responded with a double change, sending on Ricardo Fuller and Wilson Palacios for Pennant and Walters, while Ben Watson replaced the impressive Maloney for Wigan.
Beausejour certainly had not worn his shooting boots and another golden chance went begging in the 72nd minute.
The winger was inexplicably left completely unmarked at the back post when Watson swung over a free-kick but again he scuffed his shot and Begovic saved easily.
Stoke fashioned their first chance of the second half 78 minutes in as Wilkinson swung over a cross from the right for Shawcross but the defender could only nod wide.
Wigan were beginning to get a little nervy and some hesitant defending allowed Jerome to fire a shot over the bar, but they also continued to look dangerous in attack and Begovic did well to deny substitute Jordi Gomez.
And the hosts made sure of the points in injury time when Wilkinson again wanted too much time and was robbed by Moses, who did what Di Santo could not, rounding Begovic and slotting home.