Morris scored 15 points in the second quarter to lead the Rockets to a 51-44 lead and shrugged off a poor shooting performance in the last game, where he went 0 for 4 with one point in 23 minutes.
"It's nice for him to have a good game because he struggled last game," Houston coach Kevin McHale said. "He's going to be fine. He just has to learn how to play different positions. I thought, overall, we again did some good stuff but still have a long way to go."
Both teams played their starters for most of the first and third quarters, with no starter getting over 24 minutes.
Down 95-85 with 3:31 remaining, the Rockets stayed aggressive by attacking the Spurs' second unit. Jonny Flynn scored four points from the line and Jeremy Lin hitting a reverse layup to go along with Goran Dragic's basket to cut the Spurs' lead to two.
Lin's driving layup capped a 10-0 run to tie the score at 95-all with 34.6 seconds left.
Leonard got a skip pass from Cory Joseph, made a move past Lin and hit the jumper to give the Spurs the win.
"I used to get the ball down in crunch time," Leonard said. "I hit a game winner at San Diego State. I just took the shot and made it."
Duncan's block of Lowry combined with a pretty bounce pass on a James Anderson layup sparked a 6-0 run to break a 70-70 third-quarter tie and San Antonio never trailed after that.
Duncan and Parker returned to the starting lineup after sitting out Saturday's preseason opener against the Rockets in Houston.
Parker scored 11 of his 15 points in the first quarter to lead the Spurs to a 14-4 lead before the Rockets made a run to close the quarter down by six.
But Houston's second-unit led by Morris put the Rockets up 53-51 at the half.