The Wizards owned a six-point lead midway through the final period, but were outscored the rest of the way 14-5 and were deprived of what would have been their fourth win of the season.
Cleveland went on a 9-0 run capped by a 3-pointer from Dion Waiters that put the Cavaliers ahead 82-79 with 3:36 to go.
Washington moved back into a tie, but Thompson's key jumper and ensuing free throw gave Cleveland an 85-82 lead.
The Wizards had a chance to force overtime, but Jordan Crawford missed a 3-point attempt with 2 seconds remaining.
Cleveland has won two games in a row after recording just five victories in its first 28 outings. Washington's latest losing streak has reached eight games.
Kyrie Irving led Cleveland with 26 points while Thompson had 15 points and 12 rebounds. The Cavaliers shot just 37 percent from the field, but Washington turned the ball over 20 times, twice as many as Cleveland.
Crawford and Emeka Okafor both produced 17 points for the Wizards.
Interpol investigating stolen passports on missing flight
Susan Sarandon 'very excited' about daughter's pregnancy