Foster made up for two bogeys with five birdies for a 9-under total of 204.
Overnight leader Morrison had a two-shot lead on the back nine but a double bogey on the penultimate hole and a bogey on the last saw him close with a 1-over 72.
Richie Ramsay of Scotland climbed to third by carding a 68 despite bogeying his last two holes.
The round did not start well for Morrison, who pulled his tee shot into the water for a double bogey on the second hole and surrendered the lead to Richard Green of Australia.
But Morrison recovered by converting a short birdie putt on the sixth to join Green at the top of the leaderboard.
Morrison still led by a stroke on the last hole, but missed a 12-foot par putt to drop back into a tie with Foster for top spot.
Foster started the round in third place, four strokes off the pace. He made three birdies in five holes to claim a share of the lead with Green and Morrison at 9-under, but bogeyed the eighth hole to slip back to third, one stroke off the lead.
Green’s round was marred by a nightmare on No. 7. After his tee shot landed into the rough, he then hit his second shot into some thicker vegetation and had to start from the same spot again, ending up with a quadruple bogey to slip down the leaderboard.
Kaymer and Levet fired the rounds of the day with 67s.
The German had an eagle, three birdies and only one bogey.
Levet sank six birdies to claim a share of second place at one point, but a double bogey on the last hole set him back at 6-under overall.