The Horned Frogs (10-12, 1-8 Big 12) led from start to finish. Kansas (19-2, 7-2) dropped its second consecutive game after winning 18 straight. The Jayhawks fell to Oklahoma State on Saturday.
"It means a lot for everyone who is a fan and it means a lot for these kids," TCU coach Trent Johnson said. "I told them immediately after the game that you have got to go to class tomorrow and back to practice on Friday. That is my responsibility and my job. I am happy as all get-out, but it's not the last game of the year."
TCU's Garlon Green led all scorers in the game with 20 points on 7-of-13 shooting. Teammate Connell Crossland had a game-high 15 rebounds and added eight points.
"I think we executed the offense well tonight," Green said. "I was just the beneficiary of that. It means a lot. Obviously we have had tough years, but this is a big win, and we need to carry this momentum."
Kansas shot just 29.5 percent from the field (18-for-61). The Jayhawks also struggled from the 3-point arc, going 0-for-4 in the first half and 3-for-22 overall.
Ben McLemore led Kansas with 15 points, and he grabbed nine rebounds. Jeff Withey added 12 points and eight rebounds, and Naadir Tharpe had 11 points and six boards.
TCU opened up the game as if it were the ranked team coming into the matchup. The Horned Frogs held the Jayhawks to their lowest scoring half since 1989 while grabbing a 22-13 lead at the break.
"It was awful," Kansas coach Bill Self said. "Offensively, that is as bad as you can play. It's the worst team that Kansas has ever put on the floor. For the first half, there hasn't been a team play worse than that."
The Horned Frogs scored the game's first eight points and held the Jayhawks scoreless for the first 7:21.
Green led TCU with 10 points in the half, including two 3-pointers that ignited the Frogs' offense in transition. Kansas turned the ball over eight times before halftime, giveaways that TCU converted into seven points.
Following its first bucket at 12:39, Kansas would not score again until 6:06 remained, and the Jayhawks did not hit another field goal until there was 3:49 left in the half. Kansas shot 13.6 percent in the half.
The Jayhawks made a run in the final two minutes to close the halftime gap. Kansas scored five points from the free-throw line and added a Kevin Young bucket in the final minute before intermission.
"Obviously for us, we knew that we were going to have to play extremely well and extremely hard and they were going to have to help us," Johnson said. "The thing I liked about the first 10 minutes is that when we haven't got off to a good start, we struggle. That didn't happen tonight."
Just as TCU controlled much of the first half, Kansas took the momentum in the second. Tharpe brought the Jayhawks to within four points of the Horned Frogs. He hit Kansas' first 3-pointer of the game at the 9:15 mark and went on to score nine of the Jayhawks next 10 points.
Crossland responded for TCU. Off of a Green miss, Crossland slammed home a basket that reignited the home crowd. Green then hit an 18-footer and subsequently converted on a 1-and-1 opportunity to extend the lead back to nine points.
Kansas was able to get back to within five points in the final two minutes, as two Elijah Johnson 3-pointers came on either side of the Horned Frogs going 2-for-4 from the foul line. However, TCU was able to knock down three of four free throws in the final minute and grab a rebound to seal the upset.
"When there were eight seconds on the clock, I finally took a deep breath and knew that we had reached that point," Johnson said.
NOTES: The 55-point total was the Jayhawks' lowest of the season. ... Kansas has taken back-to-back losses for the first time since 2006. ... Green scored 20 or more points for the fifth time this season.