I had this on my 3.2. Having thoroughly checked for an air leak I changed the mass air flow meter and it gave an instant cure. ( I bought a genuine Bosch one off the internet far cheaper than VX parts.)
When the engine is cold it is in open loop mode and the mixture is set according to the engine map - it measures the air flow and uses the correct amount of fuel. Any problems with the mixture will not generate a fault code.
Once the engine has warmed up it goes into closed loop mode where the lambda sensors check the oxygen content of the exhaust gases. The correct mixture is sensed as zero by the short term fuel trim and it oscillates slightly about this figure (which improves the efficiency of the catalyst). If the mixture is wrong the long term trim adjusts the zero point until it is correct ( this allows for slight deterioration in sensors etc). The long term fuel trim keeps doing this until it is correct . When it runs out of adjustment (about + or - 20%) it stores a fault code. When this happens on successive starts the eml comes on.
The maf sensor gets dirty. If therefore senses a lower air flow than it is actually getting. The fuel trim richens the mixture to compensate but eventually runs out of range. Although you are supposed to be able to clean the sensor with carb or switch cleaner it did not work for me.
The maf is easy to change.