New York took a 2-1 lead early in the third on a goal by Brandon Prust but the Rangers then gave up three consecutive scores to lose their third straight.
The Rangers' lead over Pittsburgh in the Atlantic Division has been reduced to four points, with the Penguins winning their eighth straight Friday.
After Sharp and Oduya scored their two quick goals to put Chicago in front 3-2, Patrick Kane added an empty-netter with 53 seconds left for a two-goal advantage.
That goal turned out to be vital when Brad Richards scored for the Rangers 12 seconds later.
Chicago won for the fourth time in five games.
Ray Emery made 22 saves for the Blackhawks.
Henrik Lundqvist gave up three goals on 21 shots for the Rangers.