Villain is 12/9/2.3.

PokerStars No-Limit Hold'em, $0.50 BB (9 handed) Hand History Converter Tool from FlopTurnRiver.com (Format: FlopTurnRiver)

Button ($6)
SB ($49.95)
BB ($29)
UTG ($66.85)
UTG+1 ($97.80)
MP1 ($64.25)
MP2 ($50.45)
MP3 ($48.75)
Hero ($49)

Preflop: Hero is CO with A, K.
1 fold, UTG+1 calls $0.50, 2 folds, MP3 calls $0.50, Hero raises to $3, 3 folds, UTG+1 calls $2.50, MP3 calls $2.50.

Flop: ($9.75) K, Q, 2 (3 players)
UTG+1 checks, MP3 checks, Hero bets $7.5, UTG+1 folds, MP3 calls $7.50.

Turn: ($24.75) 6 (2 players)
MP3 checks, Hero bets $15, MP3 calls $15.

River: ($54.75) 5 (2 players)
MP3 bets $23.25 (All-In), Hero calls $23.25.

Final Pot: $101.25

After the flop call, I felt like he would have raised KK/QQ/KQ preflop, so that leaves flush draws, KJ or 22 I think. Maybe a dumb JT? I hate playing a huge pot with top pair but what else could I do here? I don't really want to check the turn and give him a free card since the vast majority of his range seems to be drawing hands.

On the river, I don't think he has a set because KK/QQ are out of the picture and 22 wouldn't have check-called two streets on this dangerous of a board. So I put him on either a missed draw or a weird two pair on the river as result of chasing straight and/or flush draw.

Am I anywhere close to thinking about this right?