Trailing 4-1 late in the game, the Yankees scored twice in the eighth and twice more in the ninth to stun the Blue Jays and come away with their sixth win in eight games.
Posada, who had been feuding with team management over his playing time, stepped up for Eduardo Nunez with one out in the ninth and lined a double to right off Frank Francisco (1-2).
Chris Dickerson came in to run for him, went to third on an out and scored on Curtis Granderson's ground single. Granderson then stole second and came home with the game-winner when Mark Teixeira's sharp grounder got past first baseman Juan Rivera.
CC Sabathia (5-3) pitched a complete game, retiring the final 16 batters he faced to pick up the win. The Yankees ace allowed four runs on eight hits, walking one and fanning three.
Blue Jays starter Ricky Romero got a no-decision after allowing only one run on seven hits over seven frames.
Rajai Davis had two hits and an RBI for Toronto.