The Suns took a two-point lead with 34 seconds remaining on two free throws from Jared Dudley, after which Smith hit two clutch shots to pull out the victory.
Smith made a jumper with 10 seconds left that tied the game and, after a turnover by Sebastian Telfair with only 1 second showing, beat the buzzer with his game-winner while being closely guarded by P.J. Tucker.
Smith scored 27 points and the Knicks got 23 points, eight assists and six rebounds from Jason Kidd. New York built as much as a 12-point lead in the third quarter after falling to the Los Angeles Lakers on Christmas Day.
Phoenix was led by Dudley's 36 points, a career high. The Suns have lost three in a row after winning four straight.