With regards to fault codes, if the engine is behaving strangely because of one fault, it will often chuck codes into the equation as a result, because other sensors can feed strange info back to the ECU if the engine is not running right, confusing it.
Although a good indication usually, Don't always take the fault codes as gospel.
On the 2.0, check out the big breather (metal) pipe going from the block at the back passenger side of the engine, it's usually mega gunged and requires cleaning (in my case drilling)
This is an extremely important part of the breather system on the 2.0. And as posted previously, make sure you get ALL breather pipes totally clean.
Check all your vaccum pipes are in place.
As mad as this seems, these 2.0 engines love oil and filter changes with fresh VX 10/40 semi synth oil. I once bought a 2.0, and when I picked it up it ran like crap... on draining the oil out it was more like gear oil - at least a 20/50 - and once I put the right stuff in there with a new filter I swear it made a difference to the running of the car.
Also check when your fuel filter was last changed - very important. if you don't know when, just change it, they cost pennies and can be changed in 10 minutes.
Although check the basics, such as plug leads, (when did you renew your plugs?!) .. oil in plug wells making leads deteriorate (more common on v6 though)....
I wouldn't rule out the DIS pack, but it's not that common to fail on the 2.0
Put some fuel system cleaner through with half a tank of fuel remaining
Post up your progress with this, if you're still stuck I'll try and get my brain into gear some more.
I've had a few 2.0's so I've experienced all these same problems
