%Complete is based on elapsed time.
%WorkComplete is based on completed deliverable.
You should not track by %Complete. Suppose you have a task "Prepare report" that has work of 1 day but a duration of 10 days.
50 %Complete means that half the duration (or elapsed time) has passed (even though no work may have actually been done);
50 %Work Complete means that half the deliverable is ready (even though that may have been done on the first day).
If you go to View > Gantt chart and simply update the hours/days of Actual Work then project will distribute the Actual Work in the same pattern as it stored estimated Work.
To get project to adjust durations based on the progress of Actual Work
1. Set up the display
1a. View > Task Usage
1b. In the grid on the right, make sure the row "Actual Work" is displayed. If it isn't then RightMouseButton on the grid and, in the popup, click on "Actual Work".
1c. In the grid on the right, make certain you are seeing the correct TimeScale. Double-click on the date headers and set up the display to show days or weeks or months as appropriate to your needs.
1d. Window > Split
1e. In the bottom panel, any of the displays can be used. I prefer to see the Work panel so RightMouseButton anywhere in the gray and, in the popup, select "Resource Work"
For each task
2. Configure the task correctly
2a. Make sure the task type (in the lower part of the display) is defined as "Fixed Work"
3. Update the Actual Work for each task.
3a. In the grid on the right enter each day's or week's work as it actually happened
Project will adjust the duration to reflect the amount of remaining work.