Moses headed home superbly in the 32nd minute, before Diouf slotted in on the rebound six minutes from time after fellow sub Marko Arnautovic hit the post to steer the Potters to a third straight win.
The Toffees are now without a victory in five league games and have won only once in their last 12.
Everton boss Roberto Martinez had said before the fixture that his side, who have thrived in the Europa League, were not enjoying their League campaign, and they may be worrying about the prospect of a relegation battle, as they lie just six points above the drop zone in 14th place.
The picture is far more positive for Stoke, who have triumphed in seven of their last 10 league games and are now up to eighth in the table on 42 points. The Potters are looking to better their Premier League club record set last term of a ninth-placed finish and total of 50 points, which certainly looks achievable, and their fans may well be wondering about a push for Europe.
The contest began in a scrappy manner, with few attempts on goal. Everton midfielder Darron Gibson, making his first league start since May 2013, struck a low shot from outside the box that was comfortably gathered by Asmir Begovic, while Jonathan Walters was unable to keep down a header from Charlie Adam’s free-kick at the other end.
Gareth Barry was booked for a challenge on Adam, meaning he will serve a two-match suspension for 10 yellow cards, while Stoke had to substitute the injured Philipp Wollscheid, bringing on Geoff Cameron.
Moses then brought the game to life around the half-hour mark, cutting in from the left and firing a powerful strike that Tim Howard managed to parry away. Two minutes later, the on-loan Chelsea winger had his fourth goal of the season, finding space in the Everton box to guide a header past Howard. It was an effort Peter Crouch — now level with Alan Shearer on 46 at the top of the standings for the most headed Premier League goals — would have been proud of.
Shortly after the restart, the Toffees went close to levelling as Romelu Lukaku’s shot went across Begovic and narrowly wide of the far post.
STOKE: Begovic, Bardsley, Wollscheid (Cameron 17),Wilson, Pieters, Nzonzi, Whelan, Walters, Adam (Arnautovic 74), Moses, Crouch (Diouf 64).
EVERTON: Howard, Coleman, Stones, Jagielka, Garbutt, McCarthy, Gibson, Barry (Osman 60), Lennon (Kone 60), Lukaku, Naismith (Mirallas 83).
Referee: Mark Clattenburg (Tyne & Wear).