Marion was 0-for-3 from the floor before he took a pass in the corner, dribbled past a defender, and as LeBron James came toward him, arched in his shot on the run to put the Suns ahead.
After a timeout, Cleveland had trouble getting the ball inbounds before Damon Jones fired up a 3-pointer that was way off at the horn. The Cavaliers lost for just the third time in 14 games.
Raja Bell scored 27 points, Steve Nash had 26 - 21 on 3-pointers - and Amare Stoudemire 22 as the Suns improved to 17-2 against Eastern Conference teams. Phoenix went 17-of-33 on 3-pointers, but it was the Suns' defense, not exactly their forte, in the second half was the difference.
Cleveland scored 69 points in the opening half, but only 39 after halftime on 15-of-42 shooting.
James scored 36 points to lead the Cavaliers, but the All-Star missed a 3-pointer and a pair of inside shots in the waning minutes. After leaving the floor, James, who was just 6-of-16 in the second half, kicked a trash can in disgust on his way to Cleveland's locker room.
The Suns have won 15 of their past 18 against the Cavaliers.
Larry Hughes had 25 points and Zydrunas Ilgauskas 21 for Cleveland.