diff --git a/homeassistant/components/mqtt/sensor.py b/homeassistant/components/mqtt/sensor.py
index d95d669e72f6cf63c544a5ac77c7fc3a3faf144a..52ba1a7e3c28e169021c916757cbd4291f725491 100644
--- a/homeassistant/components/mqtt/sensor.py
+++ b/homeassistant/components/mqtt/sensor.py
@@ -271,8 +271,8 @@ class MqttSensor(MqttEntity, RestoreSensor):
                     )
                 elif self.device_class == SensorDeviceClass.DATE:
                     payload = payload.date()
-            if payload != "":
-                self._state = payload
+
+            self._state = payload
 
         def _update_last_reset(msg):
             payload = self._last_reset_template(msg.payload)
diff --git a/tests/components/mqtt/test_sensor.py b/tests/components/mqtt/test_sensor.py
index 6cfaa9678bba3d3b894377a7269a82f31d54ef75..1884d04efc30738c20e909a8d66f7bdc3517ef52 100644
--- a/tests/components/mqtt/test_sensor.py
+++ b/tests/components/mqtt/test_sensor.py
@@ -313,6 +313,12 @@ async def test_setting_sensor_value_via_mqtt_json_message(
 
     assert state.state == "100"
 
+    # Make sure the state is written when a sensor value is reset to ''
+    async_fire_mqtt_message(hass, "test-topic", '{ "val": "" }')
+    state = hass.states.get("sensor.test")
+
+    assert state.state == ""
+
 
 async def test_setting_sensor_value_via_mqtt_json_message_and_default_current_state(
     hass, mqtt_mock_entry_with_yaml_config