It was the fifth 40-point game of the season for Bryant, but his first since Dec. 26.
He hit 15-of-23 shots from the field and all nine of his free throws in a game that was close from start to finish.
Steve Nash put the Lakers in front for good at 107-105 by hitting a jumper with 1:44 to play and neither side scored again until Bryant made two foul shots with 12.9 seconds remaining.
After Nicolas Batum hit a jumper with 10 seconds to go for the Trail Blazers, Bryant converted two more free throws with 8.9 seconds to play.
A missed 3-point try by Damian Lillard sealed the Los Angeles win.
Dwight Howard added 19 points and 15 rebounds for the Lakers, who have won back-to-back contests and have climbed within two games of the .500 mark.
Batum and J.J. Hickson both scored 22 points for Portland, which has dropped seven in a row.