Lasse Schoene converted a penalty just before halftime, after Arkadiusz Milik was brought down in the area by Marios Antoniades, and the Dane netted his second with a simple finish five minutes after the interval.
APOEL needed to win in order to overtake third place Ajax but apart from a few isolated attacks, most of the match was played in the visitors' half.
Ajax extended their lead through Davy Klaassen's header on 53 minutes and Milik's strike rounded off the scoring with 16 minutes to play.
Ajax finished with five points, four clear of APOEL and a long way adrift of group winners Barcelona (15) and runners-up Paris St Germain (13).
(Editing by Toby Davis)