"They were not going to lose this game," Blazers head coach Nate McMillan said. "Our execution was pretty good coming down the stretch."
David Lee posted 29 points and 11 rebounds to lead Golden State, which was looking for a fourth straight win.
Two Stephen Curry free throws gave the Warriors a 90-88 lead, but Crawford answered at the other end with a three-pointer with 1:03 remaining.
Nate Robinson had a chance to give Golden State the lead again, but made just 1-of-2 from the foul line for his 21st point. It was the first of three errors for the reserve guard in the final minute.
Crawford was fouled with 43.7 seconds on the clock and sank both free throws, proving to be the difference.
After Robinson missed a floater, Crawford hit the back of the rim on a pullup jumper from the foul line, giving the Warriors another shot to tie or take the lead. The hosts called timeout with six seconds left to draw up a final play.
They put the ball in the hands of Robinson, who split two defenders at the top of the key but lost control of the ball and failed to get a pass off as the buzzer sounded.
"We had a couple of chances," Lee said. "It was a battle of wills, and they made more plays in the end."
The Warriors controlled things early, leading 27-20 at the end of the first quarter. Portland responded with seven offensive rebounds in the second frame, leading to 12 points and a 57-54 lead at the break.
Both teams struggled from the field in the third quarter, which ended with the visitors clinging to a 72-70 advantage. The margin never reached higher than five in the fourth.
Aldridge sprained his left ankle in Portland's 124-109 home loss to Washington on Tuesday...The Warriors had won four straight over the Blazers, including a 101-93 win in Oakland on January 25...Marcus Camby posted a double-double with 12 points and 11 rebounds for Portland...Curry had eight points and eight assists in the loss.