The Valiants lost for the first time in five games as they ended 2011 on a losing note.
Skipper Marc Richards was a goalscoring sub for the second game in a row but his effort was not enough to beat a determined Macclesfield side.
Micky Adams named an unchanged line-up with Louis Dodds coming on to the bench to replace the departed Gary Roberts.
The home side had much the better of the opening exchanges with a half-chance for Rob Taylor Vale’s only chance of note in the first half-hour.
And Macclesfield took a deserved lead when Hamshaw’s drive struck the woodwork, hitting Tomlinson’s back and crossing the goal-line.
The home side were then unlucky not to double their advantage on the half-time mark when Donnelly’s shot rattled the woodwork.
Vale brought on captain Marc Richards early in the second-half and for the second successive match the skipper made his mark on the scoresheet with a 61st minute equaliser. It was Richards’ eighth of the season and his 66th Vale career goal, taking him to ninth place in Vale’s all-time scoring chart.
The goal brought Vale to life and fellow sub Williamson had a shot cleared off the line with his first touch.
But Vale succumbed to a sucker punch on 71 minutes as Macclesfield broke and Donnelly easily beat the covering defender Yates to score Macclesfield’s second goal.
Both Richards and Collins were booked as tempers boiled over and Vale battled in vain to secure a draw. And Vale were grateful for Tomlinson who pulled off a fine save to stop Macclesfield scoring a third in the dying moments.
Vale: Tomlinson, Yates, Owen, McCombe, Collins, Myrie-Williams, Griffith, Loft, Taylor (Williamson), Pope (Rigg), Madjo (Richards)
Subs: McDonald, Dodds