Russell Westbrook supplied 31 points as the Houston Rockets held on to beat the San Antonio Spurs 109-107.