Looks like @ works ok on Variables:
In [3]: a = torch.autograd.Variable(torch.rand(3,4), requires_grad=True)

In [4]: b = torch.autograd.Variable(torch.rand(4,2), requires_grad=True)

In [5]: c = a @ b

In [6]: c
Out[6]: 
Variable containing:
 0.9375  0.5729
 1.3275  0.4193
 0.2320  0.1663
[torch.FloatTensor of size 3x2]