diff --git a/changes/changelog.d/99.enhancement b/changes/changelog.d/99.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..3b5666ac44a56cbf8147f9f4f7415d5948ebe0d8
--- /dev/null
+++ b/changes/changelog.d/99.enhancement
@@ -0,0 +1 @@
+Play button now play tracks immediately instead of appending them to the queue (#99, #156)
diff --git a/front/src/components/audio/PlayButton.vue b/front/src/components/audio/PlayButton.vue
index 14d381ca19517efa6641e047fc94cd6aed4f1795..2662f30b33a5321a1e2d0121c3930c46b5f66097 100644
--- a/front/src/components/audio/PlayButton.vue
+++ b/front/src/components/audio/PlayButton.vue
@@ -2,7 +2,7 @@
   <div :class="['ui', {'tiny': discrete}, 'buttons']">
     <button
       :title="$t('Add to current queue')"
-      @click="add"
+      @click="addNext(true)"
       :class="['ui', {loading: isLoading}, {'mini': discrete}, {disabled: !playable}, 'button']">
       <i class="ui play icon"></i>
       <template v-if="!discrete"><slot><i18next path="Play"/></slot></template>
@@ -42,9 +42,7 @@ export default {
     }
   },
   mounted () {
-    if (!this.discrete) {
-      jQuery(this.$el).find('.ui.dropdown').dropdown()
-    }
+    jQuery(this.$el).find('.ui.dropdown').dropdown()
   },
   computed: {
     playable () {
@@ -98,9 +96,11 @@ export default {
     addNext (next) {
       let self = this
       this.triggerLoad()
+      let wasEmpty = this.$store.state.queue.tracks.length === 0
       this.getPlayableTracks().then((tracks) => {
         self.$store.dispatch('queue/appendMany', {tracks: tracks, index: self.$store.state.queue.currentIndex + 1})
-        if (next) {
+        let goNext = next && !wasEmpty
+        if (goNext) {
           self.$store.dispatch('queue/next')
         }
       })