Arsenal beat Premier League champions Chelsea 4-1 on penalties in the Community Shield after the sides played out a 1-1 draw in normal time.
Moses scored from close range just after half-time following Arsenal’s failure to clear a corner, the wing-back bursting through on goal before beating Petr Cech.
But Arsenal got back on level terms through substitute Sead Kolasinac after Pedro had been dismissed for a foul on Mohamed Elneny.
It was an Arsenal team missing plenty of familiar faces, including Alexis Sanchez and Mesut Ozil who were both not named in the squad, while Antonio Conte opted to start with summer signings Alvaro Morata and Antonio Rudiger on the Chelsea bench.
Arsenal new boy Alexandre Lacazette almost opened the scoring, the former Lyon striker hitting the post with a curling effort after 23 minutes.
Soon after Arsenal were forced to reshuffle their three-man defence when Per Mertesacker picked up a head injury and was replaced by Kolasinac but little else of note happened as both sides cancelled themselves out in a goalless first-half.
But things livened up quickly after the break when Moses put Chelsea ahead.
Elneny drew a good save from Thibaut Courtois with a swerving effort from the right wing shortly before the hour mark as Arsenal pushed for an equaliser.
Courtois was called into action again, saving excellently at full stretch to deny a fierce long-range effort from Granit Xhaka.
And soon after Chelsea were reduced to 10 men when Pedro was shown a red card for a late challenge on Elneny, before Arsenal got back onto level terms in the 82nd minute, Kolasinac heading home after being left unmarked.
Despite their numerical disadvantage Chelsea held on and the game went to penalties where Courtois and Morata missed their spot-kicks.