Single_cat_title() print the title before text

Set the display argument of the function to false.

<h2>
    <?php 
        if (is_category()){
            echo 'Category: ' . single_cat_title( '', false);
        }
    ?>
</h2>

Or, to use the function in its more “helpful” form you could do:

single_cat_title('Category: ');

If the display argument is true, WordPress automatically echoes the content on to the page usually within a wrapper html element and this messes with your echo.