Where possible I use the SCRUM methodology to run projects. Scope creep is dealt with pretty easily with scrum. Whenever the customer wants to shove something in, he needs to convince the product owner and if the prio is high enough, it will end up in the next sprint. I highly recommend scrum for open-ended projects and project-teams of more than three people. For fixed price projects, if a customers asks for something that is not in the specs, I usually answer like "Sure I can add that, it will take about X hours to implement and is not included in the specs". And let them confirm if they want to go ahead or not. Be willing to do anything the customer asks for, but be clear and straight about the additional budget and time it will cost.
For good clients, I let them create a simple (Word) backlog and make the deal that - IF there is some time/budget left at the end, I will pick-up the additional requirements.