Timo Meier shot, and after it deflected off Blues defenseman Colton Parayko, Meier got the puck to Gustav Nyquist, who passed to Karlsson for his second goal of the game.
The play was not subject to video review.
[WATCH: All Sharks vs. Blues highlights | Complete series coverage]
"I didn't really see it," Karlsson said when asked if he saw a hand pass by Meier. "I thought [Nyquist] got it right in front of the net there, and I just kept myself available."
The Blues were frustrated but said they knew it wasn't going to be overturned.
"Did it appear (to be a hand pass)? It was, but let's move forward, and that's what we'll try to do here in the next 24 hours," forward David Perron said. "We're a really good team in here."
San Jose took the lead in the best-of-7 series. Game 4 is at St. Louis on Friday.
Logan Couture tied it 4-4 for the Sharks with 1:01 left in the third period with goalie Martin Jones pulled for the extra attacker.
Video: SJS@STL, Gm3: Couture ties game with milestone goal
"I was happy that they kept icing the puck," Couture said. "I was a little tired, I had been out there for 30 minutes. [Alex] Pietrangelo kept icing it, gave me some time to catch my breath. I think a couple of us were tired, so we were happy that he kept icing it. [Joe Thornton] made a good play on the wall, kind of a battle, their guy threw it at the net, we were able to outnumber him. The puck came loose a little bit, and I think I got my stick on it before [Jordan] Binnington could cover it."
Pietrangelo said the icing calls were just a series of bounces that didn't go the Blues' way.
"You are just trying to make a hard play," the St. Louis captain said. "They've got the extra guy. You're hoping to get a bounce. It's kind of hard when there are guys on you. Sometimes when you flip it up like that, it spins back. Sometimes, it goes forward. Again, a game of inches."
Thornton had two goals and an assist for the Sharks, and Jones made 28 saves.
Video: Jones comes up big late in 3rd before game-tying goal
Perron scored two goals, Parayko had three assists, and Binnington made 27 saves for the Blues.
"Yeah, I thought we had a good third period, exactly the way we're supposed to play, and they find a way to get one with the goalie pulled," Perron said. "It's a tough bounce, and it's 2-1 right now. We're going to have to go to bed tonight and come back here with a smile on our face and make some adjustments that we can make and keep playing our game."
The Blues twice rallied from down two goals. They fell behind 2-0 in the first period and 3-1 early in the second.
Alexander Steen scored for St. Louis at 1:18 of the second to make it 2-1, but Thornton scored his second of the game 18 seconds later to make it 3-1 at 1:36.
The Blues scored the next three goals. Vladimir Tarasenko made it 3-2 at 4:05 before Perron tied it 3-3 at 16:03 and put the Blues ahead 4-3 at 18:42 with St. Louis' first power-play goal in six games.
Video: SJS@STL, Gm3: Perron nets PPG for second of the game
Karlsson gave the Sharks a 1-0 lead at 13:37 of the first period with his first goal in 32 games. He had not scored since Dec. 29, 2018.
"We stuck with it today," Karlsson said. "They battled a little bit harder than we did, we didn't really have it. I think we had a good first period and then we kind of stepped off the gas a bit."
Thornton scored at 16:58 to make it 2-0 after winning a loose puck in the Blues zone.
St. Louis defenseman Vince Dunn left the game in the first period after he was struck in the mouth by a Brenden Dillon shot. Coach Craig Berube said Dunn was getting looked at after the game and there would be an update Thursday.
They said it
"Well we weren't playing hand ball, were we? We were playing hockey, so I think we deserved to win this game. At the end of the day, I don't think either team drew the shorter stick on any of the calls. Fair game." -- Sharks defenseman Erik Karlsson on whether there was a hand pass before his overtime goal
"Well, it's difficult to lose in overtime and [the Stanley Cup] Playoffs anytime. We've got to move on and get ready for Game 4. Really, that's all you can do. We played a solid hockey game, but we're on the losing end of it and there's nothing we can do about what happened. We just have to move on." -- Blues coach Craig Berube
Need to know
It was Couture's 14th goal of the playoffs, tying Joe Pavelski (2016) for most in a single postseason in Sharks history. ... It was Thornton's first multigoal game in the playoffs in his 176th game. Thornton (39 years, 317 days) became the oldest player in NHL history with a multigoal game in the postseason, passing Jeremy Roenick, who was 38 years, 96 days when he scored for the Sharks in Game 7 of the 2008 Western Conference Quarterfinals. ... Perron's goal ended an 0-for-18 drought for the Blues power play dating to Game 4 of the second round against the Dallas Stars. St. Louis was 1-for-26 with the man-advantage its previous eight games. ... When a best-of-7 series to decide who plays in the Stanley Cup Final is tied 1-1, the winner of Game 3 has a series record of 54-17 (.761).
Game 4 of Western Conference Final at Enterprise Center on Friday (8 p.m. ET; NBCSN, CBC, TVAS)
Video: Karlsson's OT winner gives Sharks 2-1 series lead