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 |
| | |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*|
| X | |*X*|
| | |* *|
Case 1
If O goes for the corner, X wins like this
|O | |O X| |OXX|
| X | -> | X | -> |*X |
| | |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 | |*O |
|OX | |*X | |XXO|
|*X*| |* O| |* |
Case 2.1
So X will go for one of the bottom corners. Then the game will end like this
| O | | OO| |*OO|
| X | -> | X | -> | X |
| | |X | |XX*|