Both teams started off with plenty of attacking intent, and it was the home side who had the first real chance, as Claudio Yacob beat Lukasz Fabianski with a header but Tomas Rosicky was there to clear off the line.
It was almost all Arsenal after that though and following a few near misses, it was Rosicky who opened the scoring, as after good work on the left by Gervinho, he stooped low to header into the net.
Despite the Baggies' best efforts, they struggled to get any real possession and Arsene Wenger's men almost doubled their lead when Gervinho forced a good save from Ben Foster and really should have gone further ahead when Aaron Ramsey somehow missed from five yards, when he looked certain to score.
The Gunners did extend their lead just after half time though, as Rosicky tested Foster with a stinging volley before collecting the rebound and calmly slotting home.
Arsenal then dominated possession but went down to 10 men when Per Mertesacker was dismissed on 70 minutes for a foul on Shane Long, allowing James Morrison to make it 2-1 from the penalty spot.
West Brom then proceeded to throw everything forward but the visitors' rearguard stayed strong and they held on for a battling three points.