International Friendly: Canada 3 Jamaica 1
The BMO Field hosts came from behind to win for the first time since October 2012, with their streak without success ended at 16 games.
Jamaica, meanwhile, have gone five matches without a win.
The two nations traded fine goals a minute apart in the first half, Kemar Lawrence's free-kick for Jamaica on the half-hour mark cancelled out almost instantaneously by a David Edgar volley from a corner.
Another brilliant free-kick, this time from Canada's Marcel de Jong, put Benito Floro's men ahead for the first time before Tosaint Ricketts tapped in the sealer in the 72nd minute.
It was a much-needed win for Spanish tactician Floro, who was appointed Canada's head coach in July 2013.
Earlier, both sides threatened to open the scoring - but at the wrong end - with centre-back Edgar avoiding the concession of an own goal by the woodwork in the 10th minute.
Jamaican captain Wes Morgan then got a touch on Doneil Henry's cross in for Canada, but fortunately for the visitors, it deflected wide of the target.
Canada's Ghana-born forward Randy Edwini-Bonsu then had two chances minutes apart, but neither of his shots were close to the target, and Jamaica made the hosts pay.
Lawrence curled his free-kick over the Canadian wall and into the top right corner of Milan Borjan's net for a stunning opener.
The response from the North American nation was strong, though, with Edgar's brilliantly taken volley from Patrice Bernier's corner equalising.
Jamaican substitute Jamar Loza, who came on at half-time for Jermaine Anderson, was causing trouble for the Canadian defence, and almost broke through just prior to the hour-mark.
Loza fired low at Borjan, who parried wide of the target before collecting to clear the danger.
Canada were the more clinical side when it mattered, as De Jong's effort from the dead ball putting the hosts within reach of a drought-breaking win.
And when Ricketts tapped into an empty net four minutes later, the result was virtually sealed - with Jamaican goalkeeper Andre Blake fumbling a routine save, allowing the Hapoel Haifa man in to score.