First Python game of Tic-Tac-Toe
First off, I see no reason to define p1 and p2, then put them into the playerlist, it would be more concise to simply define them inside plist's definition. 

eg.

plist = [Player(1,'X'), Player(2, 'O')]


As for the repetition of the if statements, you could set a global variable "gameOver" that gets set true upon a game ending event.

eg.

#Before loops
gameOver = False

...

    #In for loop
        if not win and i&lt;9:
            pass
        elif not win and i==9:
            gameOver = True
            print('The match is a tie.')
            break
        else:
            gameOver = True
            break
    #In first while loop
    if gameOver:
        break
    else:
        pass


This last part is just personal opinion, but I feel like asking the user for row and column would be more intuitive than cell number.

Edit: I just realized you could just do while not gameOver, no need for the if else.