Brighton created the early chances at London Stadium and deservedly took the lead just before halftime when striker Neal Maupay pounced on a loose ball in the box to score his first goal since October.
After West Ham failed to record a single attempt on target in the first half, manager David Moyes introduced attacking midfielder Manuel Lanzini and forward Andriy Yarmolenko at the interval.
The attacking duo were instrumental in the build-up to West Ham’s equaliser on the hour mark, with wing back Johnson finding the net from close range for his first goal for the club.
Brighton were back in front when centre back Lewis Dunk smashed the ball home from a quickly-taken corner, but the hosts made it 2-2 through a Soucek header with eight minutes to go.
Additional reporting by Reuters.