I had same symptoms a while back.
Mine was the Idle Air Solenoid.
You can remove it and clean the inside with brake cleaner and a small wire brush.