I am also betting that by delaying his homework, he gets out of chores or other responsibilities or gets to stay up late. Again, if this is so, he is not taking responsibility -- you are. And you are going to really start resenting him. Set the boundaries. Limit homework time -- two hours is usually plenty at the middle level. Keep a regular schedule. If he can't finish in the time allotted, he must still do his chores and go to bed on time.
Homework is the child's responsibility. He must take the consequences of not finishing it. If you are patient and stick to the schedule and rules you have set up, it will only take a few zeros or late grades to motivate him to finish on time. Another great result: He will feel empowered because he has taken charge of his own learning.