Proportional: set the control based on a multiple of the difference between the current and the target.
Integral: adjust that setting based on cumulative difference over time. This handles the case where the proportional setting isn't providing enough of a change.
Derivative: adjust the setting based on how fast the current value is approaching the target value. This provides damping when the error is decreasing rapidly to minimize overshoot and oscillation around the target.
What's interesting is that a lot of controllers leave out the derivative term. Car cruise controls are often only PI, for instance. This works best when it's ok to approach the target slowly anyway, so oscillation is minimal.