Nate Robinson missed a potential layup for the Warriors with 32 seconds to play and Golden State never got off another shot.
The Trail Blazers snapped a two-game skid and moved within a game of Denver for second place in the Northwest Division.
Gerald Wallace scored 24 points for Portland. Nicolas Batum had 17 and Crawford added 14.
The Trail Blazers played without LaMarcus Aldridge, who did not travel with the team due to a sprained left ankle.
Golden State had won three in a row. David Lee led the Warriors with 29 points and 11 rebounds.