There is a work around if solution 1 is not working.. It will add few more lines of code but might solve you issue
IF(@col2value Is Null)
BEGIN
SELECT * FROM Table1 t1
INNER JOIN table2 t2 ON t1.col1= t2.col1
WHERE t2.Col3 = @col3Value
END
ELSE
BEGIN
SELECT * FROM Table1 t1
INNER JOIN table2 t2 ON t1.col1= t2.col1
WHERE t1.Col2 = @col2Value
AND t2.Col3 = @col3Value
END