The one with the winning strategy is quite surprisingly
X
First, let us note that
if X starts anywhere else than the center, O wins on their first move like this
|X *| |*X|* X |
| | |O*|O * |
|* O| | |
First options
When X starts in the center, O has two options, corner, which gives X zero winning moves or middle, which gives X six winning moves
|O | |*O*|
|* O *| | X | |*X*|
|* X *| | | |* *|
Case 1
If O goes for the corner, X wins like this
|O | |O X| |OXX|
|O X X| | X | -> | X | -> |*X|* X |
| | |O | |O*|O * |
Case 2
So O should go for the middle. Then, if X goes anywhere else than one of the more distant corners, O wins immediately like this
| O | |XO|X O | |*O|* O |
|OX|O X | |*X|* X | |XXO|
|X X O| |*X*||* X *| |* O| |* |
Case 2.1
So X will go for one of the bottom corners. Then the game will end like this
| O | | OO| O O| |*OO|
|* O O| | X | -> | X | -> | X |
| | |X | |XX*||X X *|