R, 53 bytes
function(n)rbind(cbind(outer(1:n,1:n,`+`)-1,2*n),2*n)
Uses the outer
"product" to generate all sums of the range 1,...,n
as a matrix, subtracts 1
from each, then bind
s 2*n
as a column on the right and a row on the bottom, recycling as needed, and returns a matrix as the result.
R, 78 bytes
More naive implementation.
function(n){m=matrix(2*n,n+1,n+1)
for(i in seq(n))m[1:n,i]=(0:(2*n))[1:n+i]
m}