Slack defending by the hosts enabled the visitors to take a 16th-minute lead. Evan Horwood and Simon Hackney combined on the left and when the home defence failed to cut out Hackney’s cross, the unmarked Scott Dobie scored with a far-post shot on the run.
Freedman equalised on 49 minutes, chesting Neil Kilkenny’s cross over the line.
Jonny Howson fired Leeds ahead in the 58th-minute when substitute Tresor Kandol’s shot was parried into his path.
But Leeds keeper Casper Ankergren spilled Hackney’s corner, allowing Danny Graham to make it 2-2 on the hour mark.
However, Freedman settled the match nine minutes later, turning in Kilkenny’s free-kick from the left through a crowded goalmouth.