Johnson, who finished with 18 points, got the rebound after teammate Derrick Byars missed a 3-point attempt from the top of the key.
"Just shoot it, that was the only instinct," Johnson said. "I knew we didn't have much time on the clock. I just tried to let it go as fast as I can before the clock ran out."
Bulls coach Vinny Del Negro said he gave Johnson advice before the game, his second NBA contest.
"I just said be aggressive," Del Negro said. "Go and have fun."
Luol Deng, who was raised in London after his family fled war-torn Sudan, impressed early and finished with 18 points at sold-out O2 Arena. He left the game in the third quarter and didn't return.
Deng kept the crowd cheering and helped the Bulls build a 71-58 lead midway through the third quarter. But Williams then took over, hitting a 3-pointer, scoring from the field and making free throws to close the gap.
Deng, recovering from a stress fracture in his right leg, said the injury was not the reason he stayed on the bench as the game heated up.
"We really wanted to stick with the plan," Deng said. "It's exciting to be home and I wanted to play a lot of minutes, but Coach came and asked me and we kind of talked about it. But it was the right thing to do -- just keep managing my minutes."
In the end, though, Deng wasn't jealous that his rookie teammate sank the late jumper for the win.
"I'm so happy that he hit that," Deng said. "I won in London, my first game."
Trailing 81-77 at the start of the fourth, the Jazz took the lead at 86-84 when Millsap drove for a layup and was fouled. He was unable to complete the three-point play.
The Jazz, who gave reserve players quality minutes throughout, appeared to be in command when Ronnie Price sank a pair of free throws with 25.4 seconds to go.
"We accomplished as much as we could," Jazz coach Jerry Sloan said of his young team. "Some of them played pretty well."
Unfortunately for Sloan, though, it came down to Johnson, who made the winning shot on his first trip to a foreign country.
"To come here my first time was a great experience," Johnson said. "Get to see the soldiers with the red coats on, things like that. A lot of stuff you only get to see on TV."
The game was played before a crowd of 18,689. The NBA was playing in London for the third straight preseason, and commissioner David Stern again noted he would like to have a regular-season game in the British capital before it hosts the 2012 Olympics.