Earlier, Netherlands won their second consecutive match by overcoming South Korea in the other Pool C clash to be virtually through to the quarterfinals with six points. (Agencies)
Hurt from their 4-7 defeat to South Korea on Friday, the North Americans struck immediately after play began to put the hosts under pressure.
Canada shocked India early in the third minute with skipper Sukhi Panesar scoring after a Brenden Bissett shot was deflected by Indian goalkeeper Harjot Singh. The ball went straight to Panesar who did not miss the chance.
However, India started attacking and was backed by a vociferous crowd cheering each time the Indians entered the Canadian half.
The hosts made several inroads but were disorganized in their disposal like in their last match against the Dutch which they lost 2-3. In a hurry to equalize, India kept losing their footing, allowing Canada to capitalize on missed chances by letting them counterattack.
The Indian forwards missed several chances created by the midfield. Mandeep Singh missed a good chance as his reverse flick went past the goalpost. A few minutes later, Pardeep Mor gave a fantastic pass which Talwinder Singh deflected but it was just off the target.
India earned its first penalty corner in the 22nd minute but Amit Rohidas failed to convert. Another penalty corner came in the 25th minute and Gurjinder Singh, who scored in the previous match, also missed.
India earned their third penalty corner in the 30th minute and this time, Mandeep did not disappoint, scoring the much-needed equalizer going into the break.
India looked a much more organized unit in the second period and would have taken the lead but Akashdeep Singh's reverse shot struck the post. The 2001 champions earned their fourth penalty corner.
The visitors earned their first penalty corner in the 51st minute and Gordon Johnston's drag flick right above keeper Harjot's head was enough to give Canada a 2-1 lead.
Just when it looked Canada were beginning to get a stranglehold of the proceedings, a brilliant Manpreet Singh pass was deflected by Akashdeep to get the much required equalizer in the 57th minute.
A beacon of hope came India's way in the 68th minute when they earned a penalty corner, duly converted by Gurjinder to put India in the lead for the first time in the match. The hosts managed to hold on to the scoreline to earn three points from the win.
India need to beat South Korea Tuesday to qualify for the quarterfinal.
Pool C results: Netherlands beat South Korea 3-2, India beat Canada 3-2.
Earlier, Netherlands won their second consecutive match by overcoming South Korea in the other Pool C clash to be virtually through to the quarterfinals with six points.