Cahill first found the net in the 39th to open the scoring after receiving a pass from Roy Miller in the box and finishing with a left-footed shot.
New York retained the 1-0 lead until the 83rd, when Toronto's Jonathan Osorio gathered a loose ball outside the penalty box and fired it home for an equalizer.
But the Red Bulls (4-4-2) notched their third win in four games when Cahill struck again late in the game, this time on header off a cross from Thierry Henry.
TFC (1-3-4) remained winless in 11 games at BMO Field.
'How to Train Your Dragon 2' releases 5-minute clip
Turkey considering to use pistachios to heat country’s first eco-city