Ukraine international Yarmolenko struck in the latter stages of the first period before Cresswell netted an excellent free kick late on, moving the Hammers into fourth position in the table and leaving a struggling United seventh with eight points from six matches.
The first shot of the match did not arrive until the 15th minute when Nemanja Matic hit one from distance, although the midfielder's effort was never threatening to trouble Lukasz Fabianski between the sticks.
There was no real energy from either side in the early stages of the contest, with both teams enjoying spells in possession but not really threatening to make the breakthrough in the capital.
West Ham's first attempt arrived in the 20th minute through Yarmolenko, but like the strike from Matic, it never threatened to trouble the opposition goalkeeper.
United had two half-chances in the period that followed, but Marcus Rashford was challenged by Declan Rice in a dangerous position inside the Hammers box before the Red Devils attacker passed up the chance to meet a dangerous cross from Aaron Wan-Bissaka.
West Ham enjoyed a good spell of pressure just before the 30-minute mark at the London Stadium, although a series of bright moments came to nothing as the two sides stayed on terms.
De Gea kept out a volley from Mark Noble in the 36th minute, but the Spanish goalkeeper could not prevent the home side from taking the lead late in the first half through Yarmolenko.
The 29-year-old managed to collect a pass from Felipe Anderson before taking a touch and finding the bottom corner with a clever finish to send the Hammers ahead against an off-colour United.
The Red Devils had plenty of players in a defensive position, but the pressure on the ball was non-existent, though, and Harry Maguire could not react quick enough to block Yarmolenko's attempt.
United had a golden chance to level the scores in the 49th minute when Andreas Pereira delivered a brilliant low cross towards Juan Mata, but the Spaniard somehow fired wide of the post from close range.
Fabianski had to keep out an effort from Scott McTominay just before the hour as the 20-time English champions pressed, before a deflected attempt off Sebastian Haller missed the United goal moments later.
It went from bad to worse for the Red Devils in the 61st minute when Rashford limped off the field with a groin problem, which meant that Jesse Lingard had to come onto the field at centre-forward.
De Gea made a smart save to keep out a low Anderson strike in the 62nd minute, before Fabianski somehow kept out a close-range Maguire effort down the other end during a spell of United pressure.
Cresswell missed the crossbar with a dangerous free kick 15 minutes from time, but West Ham still had their lead intact heading into the final stages of the contest.
Gomes was the third player off the away side's bench in the 81st minute with Solskjaer desperately looking for some inspiration in the latter stages.
However, West Ham wrapped up all the points in the 84th minute when Cresswell picked out the top corner from a brilliant free kick to make it a miserable afternoon for United.
Next up for the Hammers is a trip to Oxford United in the EFL Cup on Wednesday, while United are at home to Rochdale in the same competition on the same night.
WEST HAM UNITED (4-1-4-1): Fabianski; Fredericks (Zabaleta 80'), Diop, Ogbonna, Cresswell; Rice; Anderson (Wilshere 70'), Fornals, Noble, Yarmolenko (Snodgrass 89'); Haller
MANCHESTER UNITED (4-2-3-1): De Gea; Wan-Bissaka, Lindelof, Maguire, Young; McTominay, Matic (Fred 71'); Pereira, Mata (Gomes 81'), James; Rashford (Lingard 61') body check tags ::